gpt4 book ai didi

java - 一个明确的字符出现在两个字符串的相同位置

转载 作者:行者123 更新时间:2023-12-01 22:03:38 25 4
gpt4 key购买 nike

当我输入字符串时
abc--rd
acdr--d

它检查两个字符串中的第一个 - 实例,然后输入 if 条件(注释为 MARK1)

问题:即使只有一个字符串中有“-”,它也会进入 if 条件


使用注释部分测试的示例输出
阿彦--kr
--Ayankr
字符位置:0
st1: - st2: -
正确
字符位置:1
st1: - st2: -
正确
相同的模式

import java.util.Scanner;

public class stringpattern{
public static boolean stringPattern(String s1,String s2){
String st1=s1.length()<s2.length()?s1:s2;//larger string in st1
String st2=s1.length()>s2.length()?s1:s2;//smaller string in st2
boolean b=false;
//int cou=0;
String s=st2.substring(st1.length());//taking extra string of st2 in s
if(s.contains("-"))//false if extra string contains '-'
b=false;
else{

for(int i=0;i<st1.length();i++)
{
if((st1.charAt(i)=='-') && (st2.charAt(i)=='-'))//MARK1
{
//It enters the if condition even if there is a '-' in only one string

//System.out.println("Char Pos: "+cou);
//System.out.println("st1: "+st1.charAt(i)"+" st2: "+st2.charAt(i));
b=true;


//System.out.println(b);
}
// cou++;
}

}
return b;
}
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
String s1=s.next();
String s2=s.next();
boolean b=stringPattern(s1,s2);
if(b==true)
System.out.println("same pattern");
else
System.out.println("different pattern");
}
}

最佳答案

问题出在这里:

String st1=s1.length()<s2.length()?s1:s2;//larger string in st1
String st2=s1.length()>s2.length()?s1:s2;//smaller string in st2

您给出了两个长度相同的字符串,因此这两个条件都是假的,并且您将 st1st2 设置为 s2

我还将预防您将遇到的索引越界问题:

for(int i=0;i<st1.length();i++)
{
if((st1.charAt(i)=='-') && (st2.charAt(i)=='-'))

由于 st1 应该是更长的字符串(根据你的说法,我不确定当你解决其他问题时你会实现什么),你会到达 i >= st2.length() 的点,你应该仅搜索到较短字符串的末尾以避免这种情况。

关于java - 一个明确的字符出现在两个字符串的相同位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33230264/

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