packagecom.test;publicclassSubString1{publicstaticvoidmain(String[] args){String str ="20210521";int k =6;String res =newSubString1().splitStr(str, k);System.out.println(res);}publicStringsplitStr(String str,int k){//标识符,找到,直接结束boolean flag =false;//保存结果String result ="";//转换成数组int[] array =convertStrArray(str);for(int i =0; i < array.length -1; i++){//里面循环结束,将total置为0int total =0;//里面循环结束,将result结果清空,用于保存下一次循环的结果
result ="";//累加
total += array[i];//字符串结果集拼接
result += array[i];for(int j = i +1; j < array.length; j++){
total += array[j];
result += array[j];//是否找到if(total == k){//找到,将flag置为true,并结束循环
flag =true;break;}}//找到,结束外层循环if(flag){break;}}return result;}/**
* 将宗福传转换成int类型的数组
* @param str
* @return
*/publicint[]convertStrArray(String str){//先把字符串转成数组String[] split = str.split("");int index =0;//将字符串中的元素全部放到int类型的数组中,进行后期的运算操作int[] array =newint[split.length];for(int i =0; i < split.length; i++){
array[index]=Integer.parseInt(split[i]);
index++;}return array;}}
2.python实现
s =input("请输入数字字符串");
i =0; j =0; k =6;sum=0;while j <len(s):
ch1 = s[j];sum=sum+int(ch1)whilesum> k:
ch2 = s[i]sum=sum-int(ch2)
i = i +1ifsum== k:print("字串为:", s[i:j +1])break;
j +=1else:print("没有满足要求的子串")
寻找字符串中联系数字(全部都是1位数)之和为k的子串,如字符串"20210521"中和为6的子串为"105"。1.Java实现package com.test;public class SubString1 { public static void main(String[] args) { String str = "20210521"; int k = 6; String res = new SubString1().splitStr(s