如何找出字串是否为算术级数(AP)

时间:2018-07-22 02:24:15

标签: java string

我的字符串是“ 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点

2 个答案:

答案 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),您会生成一个具有该进度的足够长的字符串,该字符串应该是-然后将其与给出的字符串进行比较。