Maison  >  Article  >  Comment stocker des jetons de chaîne dans un tableau

Comment stocker des jetons de chaîne dans un tableau

王林
王林avant
2024-02-09 13:30:151275parcourir

L'éditeur PHP Strawberry vous présentera comment stocker les balises de chaîne dans un tableau. Lors de la programmation, nous devons souvent traiter des chaînes et les diviser en plusieurs jetons. Le stockage de ces balises dans un tableau nous permet de les traiter et de les utiliser plus facilement. Cet article expliquera en détail comment utiliser les fonctions et méthodes en PHP pour implémenter cette fonction afin d'aider les lecteurs à mieux la comprendre et l'utiliser. Que vous soyez débutant ou développeur expérimenté, vous pourrez acquérir des connaissances utiles et des conseils pratiques grâce à cet article. Commençons!

Contenu de la question

J'ai fait référence à quelques exemples pour réussir à extraire chaque partie de la saisie de l'utilisateur. Mais il ne peut être retiré qu’une seule fois. Il devrait y avoir 2 boucles pour extraire plusieurs entrées et enregistrer les marqueurs dans un tableau. Je suis bloqué sur une baie, que dois-je faire ?

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.


Résultats attendus :

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

Mon code :

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());
 }

Solution

Je vous propose de résoudre votre problème en deux étapes.

Tout d'abord, la partie ingestion : vous devez accepter les mots saisis par l'utilisateur et stocker chaque mot dans arraylist98c455a79ddfebb79781bff588e7b37e plutôt que dans un tableau de taille fixe, car vous ne savez pas à l'avance combien d'entrées vous obtiendrez.

Un exemple de code est présenté ci-dessous.

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();
}

Deuxièmement, la partie apparence : étant donné une chaîne, vous devez parcourir la liste des mots de la partie ingestion et vérifier quels mots commencent par la chaîne donnée.

Par exemple, vous pouvez créer une fonction d'assistance comme celle-ci.

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

Appliquez cette fonction au nombre de mots préfixés par ingestwords 中的每个单词,将为您提供以 str. Et vous pouvez déterminer le pourcentage d’occurrences à partir de cela.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer