我的字符串是“ 2358132235”。我需要找出这是否是字符串数字是否在进行算术级数运算。我可以一直执行到8点,但是当我达到13岁时,我不知道头可以处理多位数字在这里。有人可以帮忙。谢谢。
专用静态布尔型Arthmetic(String s){ int i = 0;
for(i = 0 ; i <s.length()-2; i++)
{
int c = s.charAt(i)-'0';
int c1 = s.charAt(i+1)-'0' ;
int c2 = s.charAt(i+2)-'0' ;
if(c + c1 != c2)
{
return false;
}
}
return true;
}
我知道此代码是不正确的,因为它只能工作到8点
答案 0 :(得分:1)
为解决这个问题,您将编写一个解析器,检查每个可能的子字符串是否可以是一个级数。我们假设进展总是正的。
让我们通过使用带有参考字符串“ 235813”的简单版本的示例进行演示。解析器可能会构建以下标记:
["2"]
,["2", "3"]
,["2", "3", "5"]
; 拒绝,因为5-3!= 3-2 ["2"]
,["2", "35"]
,["2", "35", "81"]
; 拒绝,因为81-35!= 35-2 [注意:我们不使用["2", "35", "8"]
,因为我们假设进度始终是正数] ["2"]
,["2", "358"]
; 拒绝,因为其余数字的位数不能超过358
["23"]
["23", "58"]
; 拒绝,因为其余数字的位数不能超过58
没有更多可能的子字符串用于算术级数。因此,此字符串不是算术级数。您的解析器还可以将相同的逻辑应用于更长的参考字符串。
答案 1 :(得分:0)
一旦您确定前两个数字是什么(在示例中为2和3,但值得注意的是,它很不明确,则可以有一个从1001和1002开始的进度字符串“ 10011002100310041005”,或从1开始的“ 1224364”和22),您会生成一个具有该进度的足够长的字符串,该字符串应该是-然后将其与给出的字符串进行比较。