Rumah  >  Artikel  >  Bagaimana untuk menyimpan token rentetan ke dalam tatasusunan

Bagaimana untuk menyimpan token rentetan ke dalam tatasusunan

王林
王林ke hadapan
2024-02-09 13:30:151238semak imbas

Editor PHP Strawberry akan memperkenalkan kepada anda cara menyimpan tag rentetan ke dalam tatasusunan. Semasa pengaturcaraan, kita selalunya perlu memproses rentetan dan membahagikannya kepada berbilang token. Menyimpan teg ini dalam tatasusunan memudahkan kami memproses dan mengendalikannya. Artikel ini akan menerangkan secara terperinci cara menggunakan fungsi dan kaedah dalam PHP untuk melaksanakan fungsi ini untuk membantu pembaca memahami dan menggunakannya dengan lebih baik. Sama ada anda seorang pemula atau pembangun berpengalaman, anda boleh memperoleh pengetahuan berguna dan petua praktikal daripada artikel ini. Mari mulakan!

Kandungan soalan

Saya merujuk beberapa contoh untuk berjaya mengeluarkan setiap bahagian input pengguna. Tetapi ia hanya boleh ditarik balik sekali sahaja. Perlu ada 2 gelung untuk mengekstrak berbilang input dan menyimpan penanda dalam tatasusunan. Saya terperangkap pada tatasusunan, apakah yang perlu saya lakukan?

question:
write a program that accepts string tokens in the format of token1:token2:token3:token4 , where : is used as delimiter to separate tokens. there should be two functions, ingest and appearance.

ingest takes a string, and stores it in the collection.

appearance takes a string as input . it returns a normalized value
between 0 to 1,  where the value represents the percentage of
appearances of stored tokens which have input as the prefix.

state the space and time complexity of your solution.


Hasil yang dijangkakan:

ingest('mcdonal:uk:employeea')
ingest('mcdonal:hk:employeea')
ingest('mcdonal:hk:employeeb')
ingest('mcdonal:hk:employeec')
ingest('fastfood')

appearance('mcdonal')
# > 0.8
appearance('mcdonal:hk')
# > 0.6

Kod saya:

String input;
   
        
 // For user input
 Scanner sentense = new Scanner(System.in);
 input = sentense.nextLine();   
 String[] ingestWords = {};
       
             
 // Use ':' to seperate input
 StringTokenizer st = new StringTokenizer(input, ":");
 while(st.hasMoreTokens()) { 
   System.out.println(st.nextToken());
 }

Penyelesaian

Saya cadangkan anda selesaikan masalah anda dalam dua langkah.

Pertama, bahagian pengingesan: anda perlu menerima perkataan yang dimasukkan oleh pengguna dan menyimpan setiap perkataan dalam arraylist98c455a79ddfebb79781bff588e7b37e dan bukannya tatasusunan saiz tetap, kerana anda tidak tahu terlebih dahulu berapa banyak input yang akan anda perolehi.

Kod sampel ditunjukkan di bawah.

public static void main(string[] args) {
    string input;
    list<string> ingestwords = new arraylist<>();

    scanner sentence = new scanner(system.in);
        
    while (sentence.hasnext()) {
        input = sentence.next();
            
        if (input.equals("exit")) { // to stop receiving input
            break;
        }
            
        ingestwords.add(input);         
    }
    sentence.close();
}

Kedua, bahagian penampilan: diberi rentetan, anda perlu mengulangi senarai perkataan daripada bahagian pengingesan dan semak perkataan yang bermula dengan rentetan yang diberikan.

Sebagai contoh, anda boleh membuat fungsi pembantu seperti ini.

void hasPrefix(String word, String str) {
    return word.startsWith(str);
}

Gunakan fungsi ini pada bilangan perkataan yang diawali dengan ingestwords 中的每个单词,将为您提供以 str. Dan anda boleh mengetahui peratusan kejadian daripada itu.

Atas ialah kandungan terperinci Bagaimana untuk menyimpan token rentetan ke dalam tatasusunan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam