分析题意可以了解到本题要求在一串字符串中找到所有组合起来排序递增的字符串。我们可以默认所有字符在字符串中的上升序列是1,从第一个字符开始找,如果后面的字符大于前面的字符就说明这是一个上序列那么后面字符所在的数组加一,如果连接不上前面的(两个字符一模一样的)就置为0.
①使用数组存储每一位元素的上升序列值
②后面元素要么与前者构成上升序列,要么则重置为0
③以此循环字符串中每一个元素将所有元素的上升序列相加即可得到最终值
④输出结果
String s="tocyjkdzcieoiodfpbgcncsrjbhmugdnojjddhllnofawllbhfiadgdcdjstemphmnjihecoapdjjrprrqnhgccevdarufmliqijgihhfgdcmxvicfauachlifhafpdccfseflcdgjncadfclvfmadvrnaaahahndsikzssoywakgnfjjaihtniptwoulxbaeqkqhfwl";int[] num=new int[s.length()];//每一个元素的上升子序列个数数组char[] c = s.toCharArray();//转为字符数组for (int i = 0; i < num.length; i++) {num[i]=1;//初值都为1}for (int i = 0; i < s.length(); i++) {//后面的元素下标for (int j = 0; j < i; j++) {//前面的元素下标if (c[i]>c[j]) {//上升序列num[i]+=num[j];}if (c[i]==c[j]) {//重置num[j]=0;}}}long sum=0;for (int i = 0; i < num.length; i++) {sum+=num[i];}System.out.println(sum);