算法练习-串的简单处理
2016-03-06 09:28
225 查看
在实际的开发工作中,对字符串的处理是最常见的编程任务。
本题目即是要求程序对用户输入的串进行处理。具体规则如下:
1. 把每个单词的首字母变为大写。
2.把数字与字母之间用下划线字符(_)分开,使得更清晰
3. 把单词中间有多个空格的调整为1个空格。
这道题很简单,用不到太难的算法,主要就是考你的细心程序,要考虑到所有的情况
首先说一个常规的解法
1)遍历所有情况:
重点是这个正则表达式的解法
本题目即是要求程序对用户输入的串进行处理。具体规则如下:
1. 把每个单词的首字母变为大写。
2.把数字与字母之间用下划线字符(_)分开,使得更清晰
3. 把单词中间有多个空格的调整为1个空格。
这道题很简单,用不到太难的算法,主要就是考你的细心程序,要考虑到所有的情况
首先说一个常规的解法
1)遍历所有情况:
[code]public class 串的简单处理 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); String string=sc.nextLine(); Vector<Character> vector=new Vector<Character>(); for(int i =0;i<string.length();i++){ vector.add(string.charAt(i)); } int index=0; while(index<vector.size()){ if(index==0&&vector.elementAt(index)>='a'&&vector.elementAt(index)<='z'){ vector.set(index, (char)(vector.elementAt(index)-('a'-'A'))); }else if(vector.elementAt(index-1)==' '&&vector.elementAt(index)==' '){ vector.remove(index); index--; }else if(vector.elementAt(index-1)==' '&&vector.elementAt(index)>='a'&&vector.elementAt(index)<='z'){ vector.set(index, (char)(vector.elementAt(index)-('a'-'A'))); }else if(vector.elementAt(index)>='a'&&vector.elementAt(index)<='z'&& vector.elementAt(index-1)>='0'&&vector.elementAt(index)<='9'){ vector.add(index,'_'); index++; } index++; } for(int i=0;i<vector.size();i++){ System.out.print(vector.elementAt(i)); } System.out.println(); } }
重点是这个正则表达式的解法
[code]public class 串的简单那处理2 { /** * @param args */ public static void main(String[] args) { String str=""; str=(new Scanner(System.in)).nextLine(); String[] str1=str.split("[ ]+");//以空格分组 for(int i=0;i<str1.length;i++){ str1[i]=String.valueOf((char)(str1[i].charAt(0)+('A'-'a')))+str1[i].substring(1); } String s=""; for(int i=0;i<str1.length-1;i++){ s+=str1[i]+" "; } s+=str1[str1.length-1]; Pattern p=Pattern.compile("([0-9]+)");//正则表达式实例化 Matcher m=p.matcher(s);//以正则表达式创建匹配器 String fin=""; int st=0; while(m.find()){ int start=m.start(); int end=m.end(); fin+=s.substring(st, start);//将数字之前的字符串写入fin中 if(s.charAt(start-1)!=' ') fin+="_"; fin+=m.group(1);//fin中加入匹配的字符串 if(s.charAt(end)!=' ') fin+="_"; st=end; } if(st<s.length()) fin+=s.substring(st);//fin中加入剩下的去除数字的字符串 System.out.println(fin); } }
相关文章推荐
- 二维数组的列排序
- UITableView
- android Butt 按钮单击事件的监听
- [视频]Win10 Mobile RedStone预览版磁贴动画演示:这就是淡入淡出
- CF #344 Div. 2
- HDU 3035 War 平面最小割+优先队列优化的dij
- 在web service间传递java bean
- Android ActionBar的基本用法(转自bigconvience)
- 磁盘、分区、文件系统
- Art of Unit Test :: Stubs
- mybatis--原始dao和代理Mapper
- ggplot2_散点图
- colorAccent,colorPrimary,colorPrimaryDark……来这里你就明白了
- Freemarker常用技巧
- Docker简介
- UIScrollView和MultiThreading、UITextField、Keyboard
- iOS之GCD再谈(dispatch_barrier_async)
- 选拔总结
- 消费者生产者
- Spring工作流程