以下是我的代码:
String LongestWord(String a)
{
int lw=0;
int use;
String lon="";
while (!(a.isEmpty()))
{
a=a.trim();
use=a.indexOf(" ");
if (use<0)
{
break;
}
String cut=a.substring(0,use);
if(cut.length()>lw)
{
lon=cut;
}
lw=lon.length();
a=a.replace(cut," ");
}
return lon;
}
问题是当我输入一个字符串时, “一个男孩在公园里玩耍”
它将最长的单词作为“ying”返回,因为当它第一次用“”替换'cut'时,它也会删除所有'a'-s,这样它就会变成 在循环的第一次迭代之后,“男孩正在玩耍”
请弄清楚出了什么问题?
提前致谢!
答案 0 :(得分:2)
您已经知道了这个问题:该程序会进行不必要的替换。
因此,请停止更换。 在这个程序中,检查的单词是直接切割而不是使用有害替代品。
String LongestWord(String a)
{
int lw=0;
int use;
String lon="";
while (!(a.isEmpty()))
{
a=a.trim();
use=a.indexOf(" ");
if (use<0)
{
break;
}
String cut=a.substring(0,use);
if(cut.length()>lw)
{
lon=cut;
}
lw=lon.length();
a=a.substring(use+1); // cut the word instead of doing harmful replacement
}
return lon;
}
答案 1 :(得分:1)
我会使用数组:
String[] parts = a.split(" ");
然后你可以遍历部分,对于每个元素(是一个字符串)你可以检查长度:
parts[i].length()
并找到最长的一个。
答案 2 :(得分:0)
我会使用扫描仪来执行此操作
String s = "the boy is playing in the parl";
int length = 0;
String word = "";
Scanner scan = new Scanner(s);
while(scan.hasNext()){
String temp = scan.next();
int tempLength = temp.length();
if(tempLength > length){
length = tempLength;
word = temp;
}
}
}
你检查每个单词的长度,如果它长,那么你以前所有的单词都存储在字符串“单词”中
答案 3 :(得分:0)
您可以使用split函数来获取字符串数组。
循环该数组以找到最长的字符串并将其返回。
String LongestWord(String a) {
String[] parts = a.split(" ");
String longest = null;
for (String part : parts) {
if (longest == null || longest.length() < part.length()) {
longest = part;
}
}
return longest;
}
答案 4 :(得分:0)
另一种方式使用Streams
。
Optional<String> max = Arrays.stream("a boy is playing in the park"
.split(" "))
.max((a, b) -> a.length() - b.length());
System.out.println("max = " + max);
答案 5 :(得分:0)
如果您正在寻找非简单的解决方案,您可以使用split
或map
使用 only one loop
解决
static String longestWorld(String pharagragh) {
int maxLength = 0;
String word=null,longestWorld = null;
int startIndexOfWord = 0, endIndexOfWord;
int wordLength = 0;
for (int i = 0; i < pharagragh.length(); i++) {
if (pharagragh.charAt(i) == ' ') {
endIndexOfWord = i;
wordLength = endIndexOfWord - startIndexOfWord;
word = pharagragh.substring(startIndexOfWord, endIndexOfWord);
startIndexOfWord = endIndexOfWord + 1;
if (wordLength > maxLength) {
maxLength = wordLength;
longestWorld = word;
}
}
}
return longestWorld;
}
现在让我们测试一下
System.out.println(longestWorld("Hello Stack Overflow Welcome to Challenge World"));// output is Challenge
答案 6 :(得分:0)
尝试:
package testlongestword;
/**
*
* @author XOR
*/
public class TestLongestWord{
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
System.out.println(LongestWord("a boy is playing in the park"));
}
public static String LongestWord(String str){
String[] words = str.split(" ");
int index = 0;
for(int i = 0; i < words.length; ++i){
final String current = words[i];
if(current.length() > words[index].length()){
index = i;
}
}
return words[index];
}
}