分析題意可以了解到本題要求在一串字符串中找到所有組合起來排序遞增的字符串。我們可以默認所有字符在字符串中的上升序列是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);