gpt4 book ai didi

java - 查找 n :th word in a string

转载 作者:行者123 更新时间:2023-11-30 06:26:16 25 4
gpt4 key购买 nike

我正在尝试查找字符串中的第 n 个单词。我不允许使用 String 类中的 StringToknizersplit 方法。

我现在意识到我可以使用空格作为分隔符。唯一的问题是我不知道如何找到第一个空白的位置。

public static String pick(String message, int number){
String lastWord;
int word = 1;
String result = "haha";

for(int i=0; i<message.length();i++){
if(message.charAt(i)==' '){enter code here
word++;
}
}

if(number<=word && number > 0 && number != 1){//Confused..
int space = message.indexOf(" ");//improve
int nextSpace = message.indexOf(" ", space + 1);//also check dat
result = message.substring(space,message.indexOf(' ', space + 1));
}

if(number == 1){
result = message.substring(0,message.indexOf(" "));

}
if(number>word){
lastWord = message.substring(message.lastIndexOf(" ")+1);
return lastWord;
}
else return result;
}

最佳答案

当前的实现过于复杂,难以理解。

考虑这个替代算法:

  • 初始化index = 0,以跟踪您在输入字符串中的位置
  • 重复 n - 1 次:
    • 跳过非空格字符
    • 跳过空格字符
  • 此时您位于第 n 个单词的开头,请将其保存到 start
  • 跳过非空格字符
  • 此时您正处于第 n 个单词的末尾
  • 返回开始和结束之间的子字符串

像这样:

public static String pick(String message, int n) {
int index = 0;

for (int i = 1; i < n; i++) {
while (index < message.length() && message.charAt(index) != ' ') index++;
while (index < message.length() && message.charAt(index) == ' ') index++;
}

int start = index;
while (index < message.length() && message.charAt(index) != ' ') index++;

return message.substring(start, index);
}

请注意,如果 n 高于输入中的单词数,这将返回空字符串。(如果这不是您想要的,应该很容易调整。)

关于java - 查找 n :th word in a string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47147227/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com