Ajouter un algorithme d'espace à la chaîne

Questions et réponses du rseoc 2021-12-30 12:01:58 阅读数:787

ajouter algorithme espace la cha

Le lien de la question est

Le Code que j'ai écrit

class Solution { public String addSpaces(String s, int[] spaces) { StringBuilder stringBuilder = new StringBuilder(s); int c = 0; for (int v : spaces) { stringBuilder.insert(v + c++, ' '); } return stringBuilder.toString(); }}

img

Mais je ne sais pas pourquoi la performance est si mauvaise,Pas pour l'épissage fréquent des chaînesStringBuilderBonne performance??

Comment optimiser mon plan actuel?




Adopter les réponses:

StringBuilder De insert La complexité est n, Donc vous traversez chaque insertion Tout StringBuilder String

img

img

Les performances ne sont pas aussi bonnes que vous le pensez .Il est recommandé d'utiliser StringBuilder De append Méthodes

public String addSpaces(String s, int[] spaces) { StringBuilder stringBuilder = new StringBuilder(); int p1 = 0, p2 = 0, len = s.length(), n = spaces.length; while (p1 < len) { if (p2 < n && p1 == spaces[p2]) { stringBuilder.append(' '); p2++; } stringBuilder.append(s.charAt(p1++)); } while (p2++ < n) { stringBuilder.append(' '); } return stringBuilder.toString();}

J'ai soumis les résultats suivants:

img



Autres réponses2:

C'est juste relatif. StringBufferMeilleure performance, Mais ça prend du temps.


Autres réponses3:

Autres réponses4:

Une vague de questions

 char[] chars = s.toCharArray(); char[] result = new char[s.length() + spaces.length]; int sp = 0,index = 0; for(int i=0;i<chars.length;i++){ if(sp < spaces.length && spaces[sp] == i){ result[index++] = ' '; sp++; } result[index++] = chars[i]; } return new String(result);

img

版权声明:本文为[Questions et réponses du rseoc]所创,转载请带上原文链接,感谢。 https://primo.wiki/2021/12/202112301049442421.html