我想找到两个字符串最长的公共前缀。有没有办法循环我的最后两个if语句,这样我就可以在最后两个不匹配的字符处结束?
System.out.println("Enter the first string: ");
String s = input.nextLine();
System.out.println("Enter the second string: ");
String s2 = input.nextLine();
//check if first characters are same
if (s.charAt(0) != s2.charAt(0)) {
System.out.println(""+s+ " and "+s2+ " have no common prefix");
System.exit(0);
}
if (s.charAt(0) == s2.charAt(0))
System.out.print(" "+s.charAt(0));
if (s.charAt(0) == s2.charAt(0))
System.out.print(" "+s.charAt(1));
if (s.charAt(0) == s2.charAt(0))
System.out.print(" "+s.charAt(2));
}
}
示例:
Enter first string: Welcome to c++
Enter second string: Welcome to java
代码应返回Welcome to作为公共前缀。
4条答案
按热度按时间ikfrs5lh1#
试试这个。2我想这就是你想要达到的目标。3如果这是正确的,我会在后面补充说明
编辑:
1.我找到较大的字符串并选择它作为外部字符串进行循环
toCharArray()
将字符串转换为字符,以便您可以使用Java的foreach循环字符串中的每个字符(有关详细信息,请单击1(https://stackoverflow.com/questions/2451650/how-do-i-apply-the-for-each-loop-to-every-character-in-a-string))index
将包含两个字符串连续相等的最后一个索引。index
的字符41zrol4v2#
可能是这样的:
但你的问题最好能有更多的细节。
**编辑:**这取决于@afrojuju_想做什么。这并不清楚。可以添加一些更多的逻辑来完成所需的行为。
**编辑2:**添加了@JavaBeast指出的字符串长度比较。
uxh89sit3#
7hiiyaii4#
尝试使用以下代码块: