(牛客网)非法访问,我人傻了,家人们到底哪里出错了,无能狂怒TT

家人们,我想知道这个到底哪里出错了,就这个非法访问我看了n遍还是没看出来问题。旁观者清,家人们帮我看看吧╯︿╰

 

题目:

给定两个正整数 L,R ,还有一个数字串 s(由 0 ~ 9 等数字组成)。

问现在数字串里面有多少个不同子段 s[l,r]组成的数(把子串这一段提出来形成的数字) k满足:

L<=RL <= k 

给定的 L,R 没有前导零。

数字串可能有前导零,并且对于给定的数字串中,选出来的子段可以有前导零。两个子段的左端点的位置或者右端点的位置不一样即说两个子段不一样。

输入

2 5
13254

输出

4
import java.util.Scanner;

public class test2 {

    public static void main(String[] args) {
        
        Scanner sc = new Scanner(System.in);
        
        int a = sc.nextInt();
        int b = sc.nextInt();
        String jc = sc.next();
        
        String sa = String.valueOf(a);
        String sb = String.valueOf(b);
        int p = Math.min(a,b);
        int q = Math.max(a, b);
        
        int min = Math.min(sa.length(), sb.length());
        
        long temp = 0;
        int count = 0;
        
        for(int i=0; i<jc.length(); i++) {
            for(int j=i+min; j<jc.length()+1; j++) {
                temp = Long.valueOf(jc.substring(i, j));
                if(temp>=p && temp<=q) {
                    System.out.print(temp+" ");
                    count++;
                }
            }
            System.out.println();
        }
        System.out.println("sum="+count);
        

    }

}

 

啥数据非法访问了?

        for(int i=0; i<jc.length(); i++) {
            for(int j=i+min; j<jc.length()+1; j++) {
                // 这里的 jc.substring(i, j) 非法访问了
                // [i,j] 前后都是闭区间
                temp = Long.valueOf(jc.substring(i, j));
                if(temp>=p && temp<=q) {
                    System.out.print(temp+" ");
                    count++;
                }
            }
            System.out.println();
        }

 

家人们,看看孩子,看看代码吧ㅠㅠ

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632