华为oj字符串合并处理
2016-02-03 19:46
309 查看
按照指定规则对输入的字符串进行处理。详细描述:将输入的两个字符串合并。对合并后的字符串进行排序,要求为:下标为奇数的字符和下标为偶数的字符分别从小到大排序。这里的下标意思是字符在字符串中的位置。对排训后的字符串进行操作,如果字符为‘0’——‘9’或者‘A’——‘F’或者‘a’——‘f’,则对他们所代表的16进制的数进行BIT倒序的操作,并转换为相应的大写字符。如字符为‘4’,为0100b,则翻转后为0010b,也就是2。转换后的字符为‘2’; 如字符为‘7’,为0111b,则翻转后为1110b,也就是e。转换后的字符为大写‘E’。 举例:输入str1为"dec",str2为"fab",合并为“decfab”,分别对“dca”和“efb”进行排序,排序后为“abcedf”,转换后为“5D37BF”接口设计及说明:/*功能:字符串处理输入:两个字符串,需要异常处理输出:合并处理后的字符串,具体要求参考文档返回:无*/
输入 | 输入两个字符串 |
---|---|
输出 | 输出转化后的结果 |
样例输入 | dec fab |
样例输出 | 5D37BF |
import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { //Integer i = 4; //static int reverse(int i) //System.out.println(Integer.toBinaryString(9)); //System.out.println(Integer.reverse(2)); //StringBuffer str = new StringBuffer("lirao"); //System.out.println(str.reverse()); //static String toString(char[] a) 返回指定数组内容的字符串表示形式。 //char[] toCharArray() 将此字符串转换为一个新的字符数组。 //Integer.valueOf("0101",2).toString() Scanner sc = new Scanner(System.in); String str1 = sc.next(); String str2 = sc.next(); String str = str1 + str2; String oddstr = new String(""); String evenstr = new String(""); for (int i = 0; i < str.length();i++) if ((i & 1) == 0) evenstr += str.charAt(i); else oddstr += str.charAt(i); //System.out.println(evenstr+"----"+oddstr); char[] s1 = evenstr.toCharArray(); char[] s2 = oddstr.toCharArray(); Arrays.sort(s1); Arrays.sort(s2); String outstr = new String(""); int even = 0,odd = 0; for (int i = 0; i < str.length();i++){ if ((i & 1) == 0){ outstr += s1[even]; even++; } else { outstr += s2[odd]; odd++; } } String reoutstr = new String(""); for (int i = 0; i < outstr.length();i++){ if (Character.isDigit(outstr.charAt(i))){ reoutstr += tranfun(outstr.charAt(i) - 48); } //Integer.toHexString(int i) else if(outstr.charAt(i) >= 'a' && outstr.charAt(i) <= 'f'){ //Integer.valueOf("FFFF",16).toString() reoutstr += Integer.toHexString(tranfun(outstr.charAt(i) - 87)); } else if(outstr.charAt(i)>='A'&&outstr.charAt(i)<= 'F'){ reoutstr += Integer.toHexString(tranfun(outstr.charAt(i) - 55)); } else reoutstr += outstr.charAt(i); } char[] strr = reoutstr.toCharArray(); for (int i = 0; i < reoutstr.length();i++){ if (reoutstr.charAt(i)>='a' && reoutstr.charAt(i)<='f'){ strr[i] = (char)(strr[i] - 32); } } for (int i = 0; i < strr.length;i++) System.out.print(strr[i]); } public static int tranfun(int inter){ String str1 = Integer.toBinaryString(inter); StringBuffer strb = new StringBuffer(str1); strb.reverse(); String str2 = strb.toString(); //Integer.valueOf("0101",2).toString() int out = Integer.valueOf(str2,2); return out; } }
相关文章推荐
- 数据库链接字符串查询网站
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- Flex字符串比较 还有Flex字符串操作
- Ruby实现的矩阵连乘算法
- Ruby中创建字符串的一些技巧小结
- ASP下经常用的字符串等函数参考资料
- 将字符串小写转大写并延时输出的批处理代码
- 将字符串转换成System.Drawing.Color类型的方法
- C#插入法排序算法实例分析
- Lua源码中字符串类型的实现
- Lua性能优化技巧(四):关于字符串
- 字符串聚合函数(去除重复值)
- Ruby中的字符串编写示例
- 总结的5个C#字符串操作方法分享
- sqlserver中求字符串中汉字的个数的sql语句
- sql server字符串非空判断实现方法
- VBS的字符串及日期操作相关函数
- C#实现将千分位字符串转换成数字的方法
- jquery 删除字符串最后一个字符的方法解析