题目描述

按照指定规则对输入的字符串进行处理。

详细描述:

将输入的两个字符串合并。

对合并后的字符串进行排序,要求为:下标为奇数的字符和下标为偶数的字符分别从小到大排序。这里的下标意思是字符在字符串中的位置。

对排序后的字符串进行操作,如果字符为‘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”

接口设计及说明:

/*

功能:字符串处理

输入:两个字符串,需要异常处理

输出:合并处理后的字符串,具体要求参考文档

返回:无

*/

void ProcessString(char* str1,char *str2,char * strOutput)

{

}

输入描述:

输入两个字符串

输出描述:

输出转化后的结果

示例1

输入

  1. dec fab

输出

  1. 5D37BF

代码如下:

  1. package com.yzh.hehe;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Arrays;
  5. import java.util.Collections;
  6. import java.util.Iterator;
  7. import java.util.List;
  8. import java.util.Scanner;
  9.  
  10. public class StringMerge1 {
  11.  
  12. public static void main(String[] args) {
  13. // TODO Auto-generated method stub
  14. Scanner scanner=new Scanner(System.in);
  15. while (scanner.hasNext()) {
  16. String str1=scanner.next();
  17. String str2=scanner.next();
  18. ProcessString(str1, str2);
  19. }
  20. scanner.close();
  21.  
  22. }
  23.  
  24. public static void ProcessString(String str1,String str2 ) {
  25. StringBuilder stringBuilder=new StringBuilder(str1+str2);
  26. List<Character>jiList=new ArrayList<Character>();
  27. List<Character>ouList=new ArrayList<Character>();
  28. int length=stringBuilder.length();
  29. //将奇数偶数下标位置的字符分开
  30. for (int i = 0; i < length; i++) {
  31. if (i%2==0) {
  32. jiList.add(stringBuilder.charAt(i));
  33. }else {
  34. ouList.add(stringBuilder.charAt(i));
  35. }
  36. }
  37. //对奇偶字符串排序
  38. Collections.sort(jiList);
  39. Collections.sort(ouList);
  40.  
  41. // Character[]cjiArr={};
  42. // cjiArr= jiList.toArray( cjiArr);
  43. // Character[]couArr={};
  44. // couArr=ouList.toArray(couArr);
  45. // Arrays.sort(cjiArr);
  46. // Arrays.sort(couArr);
  47. stringBuilder.delete(0, stringBuilder.length());//删除整个stringBuilder
  48. int ouSize=ouList.size();
  49. //再合并奇偶字符串
  50. for(int i=0;i<ouSize;i++){
  51. stringBuilder.append(jiList.get(i));
  52. stringBuilder.append(ouList.get(i));
  53. }
  54. if (jiList.size()>ouSize) {
  55. stringBuilder.append(jiList.get(ouSize));
  56. }
  57. Object[] oArr={0,1,2,3,4,5,6,7,8,9,'A','B','C','D','E','F'};//根据值和数组下标进行数组映射
  58. for (int i = 0; i < length; i++) {
  59. Character temp=stringBuilder.charAt(i);
  60. String ts=null;
  61. if((temp>='0'&&temp<='9')||(temp>='a'&&temp<='f')||(temp>='A'&&temp<='F')){
  62. if (temp=='a'||temp=='A') {
  63. ts=Integer.toBinaryString(10);
  64. }else if (temp=='b'||temp=='B') {
  65. ts=Integer.toBinaryString(11);
  66. }else if (temp=='c'||temp=='C') {
  67. ts=Integer.toBinaryString(12);
  68. }else if (temp=='d'||temp=='D') {
  69. ts=Integer.toBinaryString(13);
  70. } else if (temp=='e'||temp=='E') {
  71. ts=Integer.toBinaryString(14);
  72. } else if (temp=='f'||temp=='F') {
  73. ts=Integer.toBinaryString(15);
  74. } else {
  75. ts=Integer.toBinaryString(Integer.parseInt(temp.toString()));//转换成二进制字符串
  76. }
  77. StringBuilder tempBuilder=new StringBuilder();
  78. //以4个bit进行处理
  79. for(int j=ts.length();j<4;j++){
  80. tempBuilder.append('0');
  81. }
  82. tempBuilder.append(ts);
  83. tempBuilder.reverse();
  84. int index=Integer.parseInt(tempBuilder.toString(), 2);//将二进制转换为十进制整数
  85. stringBuilder.replace(i, i+1, oArr[index].toString()); //替换得到最终字符
  86. }
  87. }
  88. System.out.println(stringBuilder.toString());
  89.  
  90. }
  91.  
  92. }

解题5(StringMerge1)的更多相关文章

  1. SCNU ACM 2016新生赛决赛 解题报告

    新生初赛题目.解题思路.参考代码一览 A. 拒绝虐狗 Problem Description CZJ 去排队打饭的时候看到前面有几对情侣秀恩爱,作为单身狗的 CZJ 表示很难受. 现在给出一个字符串代 ...

  2. SCNU ACM 2016新生赛初赛 解题报告

    新生初赛题目.解题思路.参考代码一览 1001. 无聊的日常 Problem Description 两位小朋友小A和小B无聊时玩了个游戏,在限定时间内说出一排数字,那边说出的数大就赢,你的工作是帮他 ...

  3. HDU 3791二叉搜索树解题(解题报告)

    1.题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=3791 2.参考解题 http://blog.csdn.net/u013447865/articl ...

  4. 【BZOJ1700】[Usaco2007 Jan]Problem Solving 解题 动态规划

    [BZOJ1700][Usaco2007 Jan]Problem Solving 解题 Description 过去的日子里,农夫John的牛没有任何题目. 可是现在他们有题目,有很多的题目. 精确地 ...

  5. CH Round #56 - 国庆节欢乐赛解题报告

    最近CH上的比赛很多,在此会全部写出解题报告,与大家交流一下解题方法与技巧. T1 魔幻森林 描述 Cortana来到了一片魔幻森林,这片森林可以被视作一个N*M的矩阵,矩阵中的每个位置上都长着一棵树 ...

  6. wechall.net/stegano 解题心得

    /* 转载请注明出处:http://www.cnblogs.com/Martinium/p/wechall_stegano.html */ 最近迷上了 www.wechall.net 网站,里面都是些 ...

  7. Mountains(CVTE面试题)解题报告

    题目大意: 用一个数组代表群山的高度.高度大的地方代表山峰,小的地方代表山谷.山谷可以容水.假设有一天下了大雨,求群山中总共可以容纳多少水? 如图所示情况,a代表该数组,总共可以容纳5个水. 解题思路 ...

  8. timus 1180. Stone Game 解题报告

    1.题目: 1180. Stone Game Time limit: 1.0 secondMemory limit: 64 MB Two Nikifors play a funny game. The ...

  9. timus 1175. Strange Sequence 解题报告

    1.题目描述: 1175. Strange Sequence Time limit: 1.0 secondMemory limit: 2 MB You have been asked to disco ...

随机推荐

  1. 应用PLSQL Developer(技巧)

    以下是一些 PLSQL Developer的使用技巧. 转自:PLSQL developer常用技巧,作者:逍遥游xj

  2. leetcode1022

    class Solution(object): def __init__(self): self.li = list() self.sums = 0 def Trace(self,root): if ...

  3. Ubuntu下无法使用Secure_CRT连接服务器

    虚拟机使用 1 .指令安装了SSH服务器 sudo apt-get install openssh-server 2. 输入命令 ps | grep ssh 查看SSH服务是否开启 显示服务已开启 3 ...

  4. 通过HTTP请求响应过程了解HTTP协议

    通过HTTP请求响应过程了解HTTP协议 http://www.cnblogs.com/YeChing/p/6337378.html

  5. 浅谈 volatile 的实现原理

    在并发编程中我们一般都会遇到这三个基本概念:原子性.可见性.有序性.我们稍微看下volatile 原子性 原子性:即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行. ...

  6. 浅谈如何避免内存泄漏(out of memory)

    1.在涉及使用Context时,对于生命周期比Activity长的对象应该使用Application的Context.凡是使用Context优先考虑Application的Context,当然它并不是 ...

  7. 机器学习进阶-光流估计 1.cv2.goodFeaturesToTrack(找出光流估计所需要的角点) 2.cv2.calcOpticalFlowPyrLK(获得光流检测后的角点位置) 3.cv2.add(进行像素点的加和)

    1.cv2.goodFeaturesToTrack(old_gray, mask=None, **feature_params)  用于获得光流估计所需要的角点参数说明:old_gray表示输入图片, ...

  8. Django--ORM(模型层)-重点

    一.ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库, 通过简单的配置就可以轻松更换数据库,这极大的减轻了开发 ...

  9. 笨方法学python之读写文件、open函数的用法

    一.python读写文件相关知识点 close:关闭文件 read:读取文件的内容//你可以把结果赋给一个变量 readline:只读取文件中的一行 truncate 美 /trʌŋ'ket/ :清空 ...

  10. redis 学习笔记3(哨兵模式下分布式锁的实现以及全局唯一id的生成)

    redis实现分布式锁和全局唯一id应该是较为常见的应用. 实现基于redis的setNX,以及incr命令.还是比较简单的! 搭建环境以及配置好sping整合,做了下测试,有兴趣的载下来看看,自己做 ...