gpt4 book ai didi

java - 找出两个字符串的最长公共(public)前缀

转载 作者:搜寻专家 更新时间:2023-10-31 19:55:20 25 4
gpt4 key购买 nike

我想找到两个字符串的最长公共(public)前缀。有没有办法循环我的最后几个 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 作为公共(public)前缀。

最佳答案

试试这个。我想这就是您要实现的目标。如果这是正确的,我稍后会添加解释

import java.util.*;
import java.lang.*;
import java.io.*;

class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
String s = "Hello Wo";
String s2 = "Hello World";
String small,large;
if(s.length() > s2.length())
{small = s2;large = s;}
else
{small = s;large = s2;}
int index = 0;
for(char c: large.toCharArray())
{
if(index==small.length()) break;
if(c != small.charAt(index)) break;
index++;
}
if(index==0)
System.out.println(""+s+ " and "+s2+ " have no common prefix");
else
System.out.println(large.substring(0,index));
}
}

编辑:

  1. 我找到较大的字符串并选择它作为要循环的外部字符串
  2. toCharArray() 将字符串转换为字符,这样您就可以使用 Java 的 foreach 遍历字符串中的每个字符(有关更多信息,请单击 [1])
  3. 在循环内你应该在两种情况下退出
    • 字符串的结尾(我使用长度来查找是否到达较小字符串的结尾)
    • 两个字符串之间不再有匹配字符
  4. 您递增索引,直到出现上述情况之一
  5. 当您跳出 for 循环时,index 将包含两个字符串连续相等的最后一个索引。
  6. 如果 index = 0,就说没有匹配,否则打印从 0 到 index
  7. 的字符

关于java - 找出两个字符串的最长公共(public)前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22493246/

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