Java 给定一个超数a=12435和一个正常数b=45。检查给定的数字b是否与a的序列相同?
在确定a是超数后,如何执行数字b是否与a在同一序列中?使用变量跟踪匹配字符的序列。Java 给定一个超数a=12435和一个正常数b=45。检查给定的数字b是否与a的序列相同?,java,Java,在确定a是超数后,如何执行数字b是否与a在同一序列中?使用变量跟踪匹配字符的序列。 If I enter a=12435 and b=45 as they are in the sequence return true a=12435 b=54 as they are not in sequence return false. I think i can accept an input number as a string and split it into char array but I w
If I enter a=12435
and b=45 as they are in the sequence return true
a=12435
b=54 as they are not in sequence return false.
I think i can accept an input number as a string and split it into char array but I wanted to use only INT arrays.That is what the problem i am facing.Thanks in advance.
找到匹配项后,将删除该字符,以防止在处理包含重复字符的序列时出现潜在错误
public static boolean verify(String a, String b){
if("".equals(b)){
return true;
}
int locate = a.indexOf(String.valueOf(b.charAt(0)));
if(locate == -1){
return false;
}else{
return verify(a.substring(locate + 1), b.substring(1));
}
}
public bool isnsequence(字符串a、字符串b)
{
int-lowestinex=-1;
for(int i=0;i=下限索引)
{
Lowestinex=指数;
b=b.移除(索引,1);
--一,;
}
其他的
返回false;
}
}
返回Lowestinex>-1;
}
您不需要像其他答案所建议的那样转换为字符串
s:只需检查超数(a
)的最后一位是否与正常数字(b
)的最后一位匹配即可
- 如果它们相同,将两个数字除以10,以便下次比较下一个数字李>
- 如果它们不同,只需将
除以10,因为该数字不是您要查找的下一个数字a
a
匹配b
,则b
现在将为零
public bool IsInSequence(string a, string b)
{
int lowestIndex = -1;
for (int i = 0; i < a.Length; i++)
{
var index = b.IndexOf(a[i]);
if (index != -1)
{
if (index >= lowestIndex)
{
lowestIndex = index;
b = b.Remove(index,1);
--i;
}
else
return false;
}
}
return lowestIndex > -1;
}
你想比较每个数字吗??如果我设置a=13425和b=45,应该返回什么?u正在比较两个数字的每个数字??正确,因为b在aa=15234和b=54的相同序列中,那么它将正确??到目前为止您尝试了什么?(除了“我试图让StackOverflow阅读器为我编写代码。”)获取a和b的最后一位。如果它们相等,则取a和b的下一个数字。如果它们不相等,则获取a的下一个数字并进行比较。如果b中没有剩余的数字,则返回true,否则返回FALSE b.indexOf(a[i])返回什么?我怀疑a是字符串还是数组?这是什么语言?它当然不是Java.b.indexOf(a[i])如果b中不存在a的字母,则返回-1,否则返回字母所在的索引。字符串只是chars.import java.util.Scanner的数组;公共类测试{public static void main(String args[]){Scanner sc=new Scanner(System.in);System.out.println(“输入一个数字”);int a=sc.nextInt();int b=sc.nextInt();boolean s=verify(a,b);System.out.println(s);}公共静态布尔验证(int a,int b){(a!=0&&b!=0){if(a%10==b%10){b/=10;}a/=10;}返回a==0&&b==0;}它返回false即使b是不连续的如果a匹配b,那么两个数字现在都将为零,返回语句返回true,但即使给定a=12435和b=45,它也打印为false。这是最好的最佳解决方案,我想放弃投票,但sry,因为我没有声誉。@mahesh仅供参考,如果你在ideone.com上发布链接,会更容易些(或类似网站)显示一个代码不工作的示例,因为它在注释中基本不可读。首先,检查字符串b的第一个字符是否存在于a中,如果不存在,则返回false;如果存在,且索引为i,然后使用相同的逻辑判断没有第一个字符的字符串b是否为a的序列。
while (a != 0 && b != 0) {
if (a % 10 == b % 10) {
b /= 10;
}
a /= 10;
}
return b == 0;