Hari ini, saya ada temu duga pada sebelah petang Semasa temu bual kedua, ada soalan algoritma saya tidak tahu apa-apa tentang algoritma
Topiknya adalah untuk melaksanakan fungsi yang mengira operasi tambah, tolak, pendaraban dan pembahagian Rentetan input adalah serupa dengan (1+2)/4+5+(3+5)*3. Bolehkah anda terangkan serba sedikit tentang idea am? Penemubual berkata dengan bersungguh-sungguh bahawa ini adalah soalan algoritma Saya tidak fikir ia sepatutnya menjadi pelaksanaan eval(), bukan?
Gunakan algoritma halaman penjadualan untuk menukar ungkapan infiks menjadi ungkapan akhiran (ungkapan Poland terbalik)
eval adalah kaedah, tetapi ia agak tidak standard dan tidak boleh digunakan dalam kebanyakan kes.
Empat ungkapan biasa operasi pokok binari untuk penambahan biasa
Gunakan tindanan untuk melaksanakan penilaian ekspresi Di bawah Baidu, beberapa
.Anda boleh menggunakan Reverse Polish pada struktur data
Kaedah yang paling biasa ialah analisis sintaks, membina pokok ekspresi, dan kemudian menyelesaikannya.
Anda boleh menulisnya sendiri, atau anda boleh menggunakan perpustakaan yang sangat profesional dan serba boleh dipanggil Antlr.
Sudah tentu, semasa temu duga, anda harus diminta untuk menganalisis tatabahasa dan membina pokok tatabahasa sendiri Apabila ia benar-benar melakukannya, Antlr adalah lebih baik.
Algoritma dan contoh menghuraikan empat ungkapan aritmetik dalam JavaScript,
Sila lihatnya
Algoritma dan contoh menghuraikan empat ungkapan aritmetik dalam JavaScript
Saya tidak mengesyorkan menggunakan kaedah eval yang terbengkalai. 1. Adalah disyorkan untuk menggunakan ungkapan biasa 2. Cara menggunakan tindanan dalam struktur data
Cadangkan buku: Mempelajari struktur dan algoritma data JavaScript
Saya kebetulan sedang mengkaji tindanan, baris gilir dan pokok binari baru-baru ini
Ini...jika anda memasukkan rentetan.
Anda boleh menggunakan eval() terus
var a = '(1+2)/4+5+(3+5)*3';
eval(a);
Empat operasi aritmetik yang biasa digunakan untuk menghurai rentetan ialah kaedah Poland terbalik
Gunakan timbunan untuk melaksanakannya Dua tahun lalu semasa saya melakukan eksperimen struktur data, saya juga mempunyai semakan kesahihan formula. Saya akan mencari di mana untuk meletakkannya. t mencarinya. Tanggapan umum saya ialah saya ingin membuat satu. Gunakan tatasusunan dua dimensi untuk menentukan keutamaan operator, dan kemudian gunakan timbunan untuk mengiranya