问题描述
/** * 该方法将传入的字符串 从右往左按照指定的insertNumber值位 插入一个指定的insertChar代表的符号. * * @param str * 需要进行转换的字符串 * @param insertChar * 需要插入的字符 * @param insertNumber * 字符插入的位置 * @return 返回一个插入后的新字符串 举例,如果传入的字符串值为"123909000", * insertChar为">>",insertNumber为4 则返回"1>>2390>>9000" */ public String conver(String str, String insertChar, int insertNumber) { }题就这个方法,具体需要实现什么,方法注释都写好了。我想了好久都写不出来,用split方法似乎也不行,因为split里的参数必须在该字符串中有,而这题的要求又不是这样。如:逗号进行分割,分割的条件是3位。例如:1234分割后位1,234 ~~~~ 如:@进行分割,分割的条件是3位。例如:1234分割后位1@234, ~~~~ 感觉好像是往字符里追加符号,实在做不出来了。麻烦哪位帮忙解答下。谢谢啊,十分感谢~~~~分不多。。。请帮个忙~~~ 问题补充:蔡华江 写道
解决方案
刚写了下,你看看。应该还可以优化。public String conver(String str, String insertChar, int insertNumber) {StringBuffer res = new StringBuffer(); //最终返回的结果StringBuffer unStr = new StringBuffer(); //存放反序的字符串int length = str.length();for(int i = length - 1 ; i >= 0 ; i--){if( insertNumber < length && i % insertNumber == 0 && i != length - 1 ){unStr.append(insertChar);}unStr.append(str.charAt(i));}System.out.println("反序:"+unStr.toString());for(int i = unStr.length() - 1 ; i >= 0 ; i--){res.append(unStr.charAt(i));}System.out.println("结果:"+res.toString());return res.toString(); }
解决方案二:
public static String conver(String str, String insertChar, int insertNumber) { StringBuilder sb = new StringBuilder();int i = 1, length = str.length();while(i <= length){sb.insert(0,str.charAt(length - i));if ((i != length) && (i%insertNumber == 0)){sb.insert(0,insertChar);}i++;}return sb.toString(); }
解决方案三:
很简单啊,将String打散为char[]。再逆序遍历一次就是了