急急急,求字符串替换code

为爱冰封的心 2014-03-10 07:45:30
给一个字符串如“a,b,c“,和特殊符号$,要求得到所以有组合“a,b,c”,“a,b,$”,“a,$,c”,“$,b,c”,“a,$,$",“$,b,$”,“$,$,c”,“$,$,$”.
...全文
349 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
日知己所无 2014-03-15
  • 打赏
  • 举报
回复
import java.util.*;

public class GenerateCombination {
    public static void main(String[] args) {
        try {
            Scanner scanner = new Scanner(System.in);
            String  scannerNextLine = "";
            while ((scannerNextLine = scanner.nextLine()) != null &&
                    scannerNextLine.length() > 0) {

                SortedSet<String> combinationSet = new TreeSet<String>();
                generateCombination(scannerNextLine, "$", combinationSet);
                printCombination(combinationSet);

            }
            scanner.close();
        } catch (Exception e) {
            System.out.println(e);
        } finally {
        }
    }

    public static void generateCombination(
            final String inputString,
            final String replaceSymbol,
            Set <String> combinationSet) {

        String allReplaceSymbolString = "";
        for (int inputStringIndex = 0; inputStringIndex < inputString.length(); inputStringIndex++) {
            allReplaceSymbolString = allReplaceSymbolString.concat(replaceSymbol);
        }

        combinationSet.add(inputString);
        while (!combinationSet.contains(allReplaceSymbolString)) {
            SortedSet<String> appendSet = new TreeSet<String>();

            for (String combinationString : combinationSet) {
                char[] combinationCharArray = combinationString.toCharArray();
                for (int combinationCharIndex = 0;
                         combinationCharIndex < combinationCharArray.length;
                         combinationCharIndex++) {
                    char combinationChar = combinationCharArray[combinationCharIndex];
                    combinationCharArray[combinationCharIndex] = replaceSymbol.charAt(0);
                    appendSet.add(String.valueOf(combinationCharArray));
                    combinationCharArray[combinationCharIndex] = combinationChar;
                }
            }

            combinationSet.addAll(appendSet);
        }
    }

    public static void printCombination(final Set<String> combinationSet) {
        String printString = "";
        for (String combinationString : combinationSet) {
            printString += "\"" + combinationString + "\",";
        }
        if (printString.length() > 0) {
            System.out.println(printString.substring(0, printString.length() - 1) + ".");
        }
    }
}
好吧,这次输出完全满足题目要求了 输入:abc 输出:"$$$","$$c","$b$","$bc","a$$","a$c","ab$","abc".
Kunzeal 2014-03-14
  • 打赏
  • 举报
回复
感觉用递归就可以呀,递归来打印全排列...
放纵的青春 2014-03-13
  • 打赏
  • 举报
回复
引用 4 楼 Android_iPhone 的回复:
import java.util.*;

public class GenerateCombination {
    public static void main(String[] args) {
        try {
            Scanner scanner = new Scanner(System.in);
            String  scannerNextLine = "";
            while ((scannerNextLine = scanner.nextLine()) != null &&
                    scannerNextLine.length() > 0) {

                SortedSet<String> combinationSet = new TreeSet<String>();
                generateCombination(scannerNextLine, "$", combinationSet);
                printCombination(combinationSet);

            }
            scanner.close();
        } catch (Exception e) {
            System.out.println(e);
        } finally {
        }
    }

    public static void generateCombination(
            final String inputString,
            final String replaceSymbol,
            Set <String> combinationSet) {

        String allReplaceSymbolString = "";
        for (int inputStringIndex = 0; inputStringIndex < inputString.length(); inputStringIndex++) {
            allReplaceSymbolString = allReplaceSymbolString.concat(replaceSymbol);
        }

        combinationSet.add(inputString);
        while (!combinationSet.contains(allReplaceSymbolString)) {
            SortedSet<String> appendSet = new TreeSet<String>();

            for (String combinationString : combinationSet) {
                char[] combinationCharArray = combinationString.toCharArray();
                for (int combinationCharIndex = 0;
                         combinationCharIndex < combinationCharArray.length;
                         combinationCharIndex++) {
                    char combinationChar = combinationCharArray[combinationCharIndex];
                    combinationCharArray[combinationCharIndex] = replaceSymbol.charAt(0);
                    appendSet.add(String.valueOf(combinationCharArray));
                    combinationCharArray[combinationCharIndex] = combinationChar;
                }
            }

            combinationSet.addAll(appendSet);
        }
    }

    public static void printCombination(final Set<String> combinationSet) {
        for (String combinationString : combinationSet) {
            System.out.println(combinationString);
        }
    }
}
输入: abc 输出: $$$ $$c $b$ $bc a$$ a$c ab$ abc
他那个是加上,号的 这个好像也满足不了哦
放纵的青春 2014-03-13
  • 打赏
  • 举报
回复
我擦 我看错题目了啊
放纵的青春 2014-03-13
  • 打赏
  • 举报
回复
话不多说 上代码:

public static void main(String[] args) {
String str = "a,b,c,d,e";
List<String> strs=new ArrayList<String>();
for (int i = 0; i < str.length(); i++) {
if (i%2==0) {
strs.add(str.replace(""+str.toCharArray()[i], "$"));
}
}
System.out.println(strs);
}

效果图:
日知己所无 2014-03-13
  • 打赏
  • 举报
回复
稍微调整一下printCombination,应该不会很难吧
日知己所无 2014-03-12
  • 打赏
  • 举报
回复
import java.util.*;

public class GenerateCombination {
    public static void main(String[] args) {
        try {
            Scanner scanner = new Scanner(System.in);
            String  scannerNextLine = "";
            while ((scannerNextLine = scanner.nextLine()) != null &&
                    scannerNextLine.length() > 0) {

                SortedSet<String> combinationSet = new TreeSet<String>();
                generateCombination(scannerNextLine, "$", combinationSet);
                printCombination(combinationSet);

            }
            scanner.close();
        } catch (Exception e) {
            System.out.println(e);
        } finally {
        }
    }

    public static void generateCombination(
            final String inputString,
            final String replaceSymbol,
            Set <String> combinationSet) {

        String allReplaceSymbolString = "";
        for (int inputStringIndex = 0; inputStringIndex < inputString.length(); inputStringIndex++) {
            allReplaceSymbolString = allReplaceSymbolString.concat(replaceSymbol);
        }

        combinationSet.add(inputString);
        while (!combinationSet.contains(allReplaceSymbolString)) {
            SortedSet<String> appendSet = new TreeSet<String>();

            for (String combinationString : combinationSet) {
                char[] combinationCharArray = combinationString.toCharArray();
                for (int combinationCharIndex = 0;
                         combinationCharIndex < combinationCharArray.length;
                         combinationCharIndex++) {
                    char combinationChar = combinationCharArray[combinationCharIndex];
                    combinationCharArray[combinationCharIndex] = replaceSymbol.charAt(0);
                    appendSet.add(String.valueOf(combinationCharArray));
                    combinationCharArray[combinationCharIndex] = combinationChar;
                }
            }

            combinationSet.addAll(appendSet);
        }
    }

    public static void printCombination(final Set<String> combinationSet) {
        for (String combinationString : combinationSet) {
            System.out.println(combinationString);
        }
    }
}
输入: abc 输出: $$$ $$c $b$ $bc a$$ a$c ab$ abc
panzhixiong_cn 2014-03-10
  • 打赏
  • 举报
回复
给你个方向,可以考虑正则表达式
oh_Maxy 2014-03-10
  • 打赏
  • 举报
回复
暂时想到一个笨办法: abc看成0a0b0c0,然后用$挨个替换0,然后再去掉0,这样所有可插入位置都会出现一遍。
jiekou0704 2014-03-10
  • 打赏
  • 举报
回复
如果只有3个字母的话 笨方法也能写出来。只是多了找规律就难得。。写了一下代码就不帖了。希望lz能找到一个好的方法。。。参考参考

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧