java生成顺序增长的字符串

import java.util.ArrayList;
import java.util.List;

public class Test {

    public static void main(String[] args) {
        System.out.print(OrderlyStringSequence("wwww", 10));
        return;
    }

    public static List<String> OrderlyStringSequence(String s, int count) {
        List<String> res = new ArrayList<String>();
        char[] src = s.toLowerCase().toCharArray();
        char[] replica = s.toLowerCase().toCharArray();

        int maxIndex = src.length - 1;
        char initchar = src[maxIndex];
        int counter = 1;

        if (count <= 0) {
            return null;
        }

        for (int j = 0; j < src.length; j++) {
            if(!Character.isLetter( src[j])) {
                return null;
            }
        }

        res.add(String.valueOf(replica));
        counter++;


        while (true) {
            replica[maxIndex] = initchar;
            for (int i = 0; i < 26; i++) {
                int c = (int)replica[maxIndex];
                if (c < 'z') {
                    c += 1;
                    replica[maxIndex] = (char)c;
                    res.add(String.valueOf(replica));
                    if (counter++ >= count) {
                        return res;
                    }
                }
            }


            int n = src.length - 1;
            while ((n >= 0) && (replica[n] >= 'z')) {
                replica[n] = src[n];
                n--;
            }
            
            if (n < 0) {
                return res;
            } else if (n >= 0) {
                replica[n] = (char)((int)replica[n] + 1);
            }

            res.add(String.valueOf(replica));
            if (counter++ >= count) {
                return res;
            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/htdhym/article/details/81981557