解题5(StringMerge1)
题目描述
按照指定规则对输入的字符串进行处理。
详细描述:
将输入的两个字符串合并。
对合并后的字符串进行排序,要求为:下标为奇数的字符和下标为偶数的字符分别从小到大排序。这里的下标意思是字符在字符串中的位置。
对排序后的字符串进行操作,如果字符为‘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)
{
}
输入描述:
输入两个字符串
输出描述:
输出转化后的结果
输入
- dec fab
输出
- 5D37BF
代码如下:
- package com.yzh.hehe;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.Collections;
- import java.util.Iterator;
- import java.util.List;
- import java.util.Scanner;
- public class StringMerge1 {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Scanner scanner=new Scanner(System.in);
- while (scanner.hasNext()) {
- String str1=scanner.next();
- String str2=scanner.next();
- ProcessString(str1, str2);
- }
- scanner.close();
- }
- public static void ProcessString(String str1,String str2 ) {
- StringBuilder stringBuilder=new StringBuilder(str1+str2);
- List<Character>jiList=new ArrayList<Character>();
- List<Character>ouList=new ArrayList<Character>();
- int length=stringBuilder.length();
- //将奇数偶数下标位置的字符分开
- for (int i = 0; i < length; i++) {
- if (i%2==0) {
- jiList.add(stringBuilder.charAt(i));
- }else {
- ouList.add(stringBuilder.charAt(i));
- }
- }
- //对奇偶字符串排序
- Collections.sort(jiList);
- Collections.sort(ouList);
- // Character[]cjiArr={};
- // cjiArr= jiList.toArray( cjiArr);
- // Character[]couArr={};
- // couArr=ouList.toArray(couArr);
- // Arrays.sort(cjiArr);
- // Arrays.sort(couArr);
- stringBuilder.delete(0, stringBuilder.length());//删除整个stringBuilder
- int ouSize=ouList.size();
- //再合并奇偶字符串
- for(int i=0;i<ouSize;i++){
- stringBuilder.append(jiList.get(i));
- stringBuilder.append(ouList.get(i));
- }
- if (jiList.size()>ouSize) {
- stringBuilder.append(jiList.get(ouSize));
- }
- Object[] oArr={0,1,2,3,4,5,6,7,8,9,'A','B','C','D','E','F'};//根据值和数组下标进行数组映射
- for (int i = 0; i < length; i++) {
- Character temp=stringBuilder.charAt(i);
- String ts=null;
- if((temp>='0'&&temp<='9')||(temp>='a'&&temp<='f')||(temp>='A'&&temp<='F')){
- if (temp=='a'||temp=='A') {
- ts=Integer.toBinaryString(10);
- }else if (temp=='b'||temp=='B') {
- ts=Integer.toBinaryString(11);
- }else if (temp=='c'||temp=='C') {
- ts=Integer.toBinaryString(12);
- }else if (temp=='d'||temp=='D') {
- ts=Integer.toBinaryString(13);
- } else if (temp=='e'||temp=='E') {
- ts=Integer.toBinaryString(14);
- } else if (temp=='f'||temp=='F') {
- ts=Integer.toBinaryString(15);
- } else {
- ts=Integer.toBinaryString(Integer.parseInt(temp.toString()));//转换成二进制字符串
- }
- StringBuilder tempBuilder=new StringBuilder();
- //以4个bit进行处理
- for(int j=ts.length();j<4;j++){
- tempBuilder.append('0');
- }
- tempBuilder.append(ts);
- tempBuilder.reverse();
- int index=Integer.parseInt(tempBuilder.toString(), 2);//将二进制转换为十进制整数
- stringBuilder.replace(i, i+1, oArr[index].toString()); //替换得到最终字符
- }
- }
- System.out.println(stringBuilder.toString());
- }
- }
解题5(StringMerge1)的更多相关文章
- SCNU ACM 2016新生赛决赛 解题报告
新生初赛题目.解题思路.参考代码一览 A. 拒绝虐狗 Problem Description CZJ 去排队打饭的时候看到前面有几对情侣秀恩爱,作为单身狗的 CZJ 表示很难受. 现在给出一个字符串代 ...
- SCNU ACM 2016新生赛初赛 解题报告
新生初赛题目.解题思路.参考代码一览 1001. 无聊的日常 Problem Description 两位小朋友小A和小B无聊时玩了个游戏,在限定时间内说出一排数字,那边说出的数大就赢,你的工作是帮他 ...
- HDU 3791二叉搜索树解题(解题报告)
1.题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=3791 2.参考解题 http://blog.csdn.net/u013447865/articl ...
- 【BZOJ1700】[Usaco2007 Jan]Problem Solving 解题 动态规划
[BZOJ1700][Usaco2007 Jan]Problem Solving 解题 Description 过去的日子里,农夫John的牛没有任何题目. 可是现在他们有题目,有很多的题目. 精确地 ...
- CH Round #56 - 国庆节欢乐赛解题报告
最近CH上的比赛很多,在此会全部写出解题报告,与大家交流一下解题方法与技巧. T1 魔幻森林 描述 Cortana来到了一片魔幻森林,这片森林可以被视作一个N*M的矩阵,矩阵中的每个位置上都长着一棵树 ...
- wechall.net/stegano 解题心得
/* 转载请注明出处:http://www.cnblogs.com/Martinium/p/wechall_stegano.html */ 最近迷上了 www.wechall.net 网站,里面都是些 ...
- Mountains(CVTE面试题)解题报告
题目大意: 用一个数组代表群山的高度.高度大的地方代表山峰,小的地方代表山谷.山谷可以容水.假设有一天下了大雨,求群山中总共可以容纳多少水? 如图所示情况,a代表该数组,总共可以容纳5个水. 解题思路 ...
- timus 1180. Stone Game 解题报告
1.题目: 1180. Stone Game Time limit: 1.0 secondMemory limit: 64 MB Two Nikifors play a funny game. The ...
- timus 1175. Strange Sequence 解题报告
1.题目描述: 1175. Strange Sequence Time limit: 1.0 secondMemory limit: 2 MB You have been asked to disco ...
随机推荐
- 应用PLSQL Developer(技巧)
以下是一些 PLSQL Developer的使用技巧. 转自:PLSQL developer常用技巧,作者:逍遥游xj
- leetcode1022
class Solution(object): def __init__(self): self.li = list() self.sums = 0 def Trace(self,root): if ...
- Ubuntu下无法使用Secure_CRT连接服务器
虚拟机使用 1 .指令安装了SSH服务器 sudo apt-get install openssh-server 2. 输入命令 ps | grep ssh 查看SSH服务是否开启 显示服务已开启 3 ...
- 通过HTTP请求响应过程了解HTTP协议
通过HTTP请求响应过程了解HTTP协议 http://www.cnblogs.com/YeChing/p/6337378.html
- 浅谈 volatile 的实现原理
在并发编程中我们一般都会遇到这三个基本概念:原子性.可见性.有序性.我们稍微看下volatile 原子性 原子性:即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行. ...
- 浅谈如何避免内存泄漏(out of memory)
1.在涉及使用Context时,对于生命周期比Activity长的对象应该使用Application的Context.凡是使用Context优先考虑Application的Context,当然它并不是 ...
- 机器学习进阶-光流估计 1.cv2.goodFeaturesToTrack(找出光流估计所需要的角点) 2.cv2.calcOpticalFlowPyrLK(获得光流检测后的角点位置) 3.cv2.add(进行像素点的加和)
1.cv2.goodFeaturesToTrack(old_gray, mask=None, **feature_params) 用于获得光流估计所需要的角点参数说明:old_gray表示输入图片, ...
- Django--ORM(模型层)-重点
一.ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库, 通过简单的配置就可以轻松更换数据库,这极大的减轻了开发 ...
- 笨方法学python之读写文件、open函数的用法
一.python读写文件相关知识点 close:关闭文件 read:读取文件的内容//你可以把结果赋给一个变量 readline:只读取文件中的一行 truncate 美 /trʌŋ'ket/ :清空 ...
- redis 学习笔记3(哨兵模式下分布式锁的实现以及全局唯一id的生成)
redis实现分布式锁和全局唯一id应该是较为常见的应用. 实现基于redis的setNX,以及incr命令.还是比较简单的! 搭建环境以及配置好sping整合,做了下测试,有兴趣的载下来看看,自己做 ...