一道简单的字符串算法题,有空的大虾进来帮忙看看呀~~~

问题描述

/** * 该方法将传入的字符串 从右往左按照指定的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[]。再逆序遍历一次就是了

时间: 2024-10-27 23:08:42

一道简单的字符串算法题,有空的大虾进来帮忙看看呀~~~的相关文章

记一道毫无思路的算法题

今天贤内给了我一道很实际的算法题,把我彻底难住了,实在想不出来,于是写此博文以记之. 背景是这样的,现在有一个付款明细的Excel,里面有为哪个发票,哪个公司应付多少钱的明细,明细数据是62条,现在知道我们已经付出的金额为Sum,请问到底哪些发票是已付款的. 这是62条明细数据: 653165.00 356029.11 220896.45 146362.00 1847670.00 3018518.91 1347553.07 145010.74 339784.84 199350.28 120611

gui- 新手求教一道简单的字符串题目。。

问题描述 新手求教一道简单的字符串题目.. 假设一道包含n个单词的题,经蓝神读过之后,虽然单词的长度和 数量都没有变化,但内容可能已经面目全非了.现在,蓝神的队友需要你帮忙计算一下原题与蓝神读过之 后的题的相似度.单个单词相似度的计算方法是蓝神读之前和读过之后没有变化的字母个数除以单词长度 乘上百分之百,总的相似度等于所有单词相似度的平均值. Input 第一行一个整数T(T <= 200),代表蓝神读了T次题.每次第一行一个整数n(0 < n <= 100),代表这次的题有n个单词,接

算法题——一道数字组合的题目的求解

题目:给定一个数字,和一个范围,产生所有在范围内的不重复的数字之和,和等于给定的数字. 举例:给数字12,范围3-6.可以产生以下5个组合: 1.3+3+3+3 2.3+3+6 3.3+4+5 4.4+4+4 5.6+6 要求给出最快实现,并且是非递归. 这是某人给我出的一道算法题.经过考虑,给出了解法.最快的谈不上(算法无止境.人外有人),没有用递归.   还是以题目的例子说明,数字12,范围3-6.给出了5种组合.将这5种组合改写一下 3+3+3+3=3*4+4*0+5*0+6*0 记作:(

求助一道算法题,关于数组算法

问题描述 求助一道算法题,关于数组算法 有一个字符串数组{"用户1,商品1,200","用户2,商品2,100","用户3,商品1,300","用户4,商品3,50","用户5,商品3,50"},写的方法需要返回的是{"用户2,商品2","用户3,商品1","用户4,商品3"}也就是说比较下每种商品的最高价格是谁,并返回谁买了,如果价格相同取最先买

c++-求各位大神来看一道简单的C++题,

问题描述 求各位大神来看一道简单的C++题, 这里是题目,后面附上我码的程序 设计一个简单计算器.用户输入四则运算表达式,程序输出正确结果.当表达式中数据格式或运算符输入错误,程序给出错误信息.要求: (1)表达式的左.右操作数可以为整数或实数. (2)运算符限制为+,-,*,/ (3)输入表达式允许有前导空格,允许在运算符前后嵌入空格. 检测表达式由以下函数完成: void check(char *input, int &a, double &y, int &op, char *

求助一道二维数组交换特定元素位置的算法题,谢谢大家!

问题描述 求助一道二维数组交换特定元素位置的算法题,谢谢大家! 刚试验了一下出了新问题- - 比如,一开始是左边的数组,我想"把2个0去掉,然后0上面的2就掉下来了",形成右边的新数组 然后我用了循环遍历,比如只看第二列,我的做法是"从下往上找,遇到0,就和0上面的数字交换",结果成了下面这个样子了- - 我有个改进想法是"还是从下往上找,遇到0之后判断上面的是不是0,如果是0,再继续向上再找,直到不是0,然后把这个数赋值给一开始那个0的位置",

c语言-一道简单的C语言程序设计题

问题描述 一道简单的C语言程序设计题 产生30个[10,100]之间的随机整数到5行6列的数组中,求其中最大值和最小值,并把最大值元素和右上角元素对调,把最小值元素和左上角元素对调.按行.列格式输出重排前.后的情况.(提示:随机函数rand( )的函数值产生一个0~32767之间的随机数, rand( )和 srand(seed)定义在stdlib.h头文件中.先利用以下两条语句:scanf("%u", &seed); srand(seed); 来初始化rand( )的起始值.

时间复杂度-求解一道acm算法题,在线等!!

问题描述 求解一道acm算法题,在线等!! 有N个D维向量,求解每个向量到其他向量的最短距离. 只要求解每个向量到其他向量的最短距离就可以了. 距离采用欧式距离表示. 时间复杂度近似于O(DN) 解决方案 http://zhidao.baidu.com/link?url=Xt0N7upNLbk_Ik4uBxPx6Nl2n3JVp_ry9Of6YAnvQiVIkwuCXuiIPSoanHbeaf07M8zjTy-qpD4A4iFe1dXDuq

设计-一道二重积分算法题,要求复杂度低于n^2

问题描述 一道二重积分算法题,要求复杂度低于n^2 对于x∈X{x0,x1,x2,...,xn-1},y∈Y{y0,y1,y2,...,yn-1},又已知一个矩阵C,C中的元素C(i,j)的值为p(xi,xj) 设计一个算法计算 假设这里log(.)属于基本算符,有没有让它的复杂度低于n^2的方法? 解决方案 每天一道算法题2 删除链表结点(时间复杂度为O(1)))