1 字串转换
问题描述:将输入的字符串(字符串仅包含小写字母‘a’到‘z’),按照如下规则,循环转换后输出:a->b,b->c,…,y->z,z->a;若输入的字符串连续出现两个字母相同时,后一个字母需要连续转换2次。例如:aa 转换为 bc,zz 转换为 ab;当连续相同字母超过两个时,第三个出现的字母按第一次出现算。
要求实现函数:
void convert(char *input,char* output)
【输入】 char *input , 输入的字符串
【输出】 char *output ,输出的字符串
【返回】 无
示例
输入:char*input="abcd"
输出:char*output="bcde"
输入:char*input="abbbcd"
输出:char*output="bcdcde"
package com.huawei.test;
import java.util.Stack;
public class ReverseStringOutput {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String input="abcdddde";
String output="";
String result=convert(input,output);
System.out.println(result);
}
public static String convert(String input,String output){
Stack<Character> afterstack=new Stack<Character>();
Stack<Character> beforestack=new Stack<Character>();
String out="";
for(int i=input.length()-1;i>=0;i--){
char c=input.charAt(i);
beforestack.push(c);
}
while(!beforestack.isEmpty()){
char c=beforestack.pop();
int d=(int)c+1;
char c1=(char)d;
afterstack.push(c1);
if(!beforestack.isEmpty()){
if(beforestack.peek()==c){
char temp=beforestack.pop();
int e=(int)temp+2;
char c2=(char)e;
afterstack.push(c2);
}
}
}
while(!afterstack.isEmpty()){
char c=afterstack.pop();
out+=String.valueOf(c);
}
for(int i=out.length()-1;i>=0;i--){
output+=String.valueOf(out.charAt(i));
}
return output;
}
}
2 字符串处理转换
问题描述:
在给定字符串中找出单词( “单词”由大写字母和小写字母字符构成,其他非字母字符视为单词的间隔,如空格、问号、数字等等;另外单个字母不算单词);找到单词后,按照长度进行降序排序,(排序时如果长度相同,则按出现的顺序进行排列),然后输出到一个新的字符串中;如果某个单词重复出现多次,则只输出一次;如果整个输入的字符串中没有找到单词,请输出空串。输出的单词之间使用一个“空格”隔开,最后一个单词后不加空格。
要求实现函数:
void my_word(charinput[], char output[])
【输入】 char input[], 输入的字符串
【输出】 char output[],输出的字符串
【返回】 无
示例
输入:charinput[]="some local buses, some1234123drivers" ,
输出:charoutput[]="drivers local buses some"
输入:charinput[]="%A^123 t 3453i*()" ,
输出:charoutput[]=""
package com.huawei.test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
public class GetWord {
/**
* @param args
*/
public static void main(String[] args) {
String input="%A^123 t 3453i*()";
String output="";
getWord(input,output);
}
public static void getWord(String input,String output){
LinkedHashMap<String,Integer> words=new LinkedHashMap<String,Integer>();
String result="";
output="";
for(int i=0;i<input.length();i++){
char c=input.charAt(i);
if(!Character.isLetter(c)){
result+=" ";
}else{
result+=String.valueOf(c);
}
}
String[] array=result.split(" ");
for(int i=0;i<array.length;i++){
if(!array[i].isEmpty()){
if(array[i].length()>1){
words.put(array[i],array[i].length());
}
}
}
if(!words.isEmpty()){
ArrayList<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String,Integer>>(words.entrySet());
Collections.sort(list,new Comparator<Map.Entry<String, Integer>>(){
public int compare(Entry<java.lang.String, Integer> arg0,
Entry<java.lang.String, Integer> arg1) {
return arg1.getValue()-arg0.getValue();
}
});
for(int i=0; i<list.size(); i++) {
Map.Entry<String, Integer> entry = list.get(i);
if(i==list.size()-1){
output+=entry.getKey();
}else{
output+=entry.getKey()+" ";
}
}
}
System.out.println(output);
}
}