Give My Text Back
2016-07-17 17:15
239 查看
Give My Text Back
标签(空格分隔): 算法时间限制:10000ms
单点时限:1000ms
内存限制:256MB
描述
To prepare for the English exam Little Ho collected many digital reading materials. Unfortunately the materials are messed up by a malware.It is known that the original text contains only English letters (a-zA-Z), spaces, commas, periods and newlines, conforming to the following format:
Each sentence contains at least one word, begins with a letter and ends with a period.
In a sentence the only capitalized letter is the first letter.
In a sentence the words are separated by a single space or a comma and a space.
The sentences are separated by a single space or a single newline.
It is also known the malware changes the text in the following ways:
Changing the cases of letters.
Adding spaces between words and punctuations.
Given the messed text, can you help Little Ho restore the original text?
输入
A string containing no more than 8192 English letters (a-zA-Z), spaces, commas, periods and newlines which is the messed text.输出
The original text.样例输入
my Name is Little Hi.His name IS Little ho , We are friends.
样例输出
My name is little hi.His name is little ho, we are friends.
解析
规则:每个标点符号之前没有空格,标点符号之后加空格;
‘.’之后表示每个句子的开始,首字母应该大写;
只有每个句子的句首字母应该大写;
代码:
import java.util.Scanner; public class Main { public static String dealwith(String s) { String s1 = s.trim().toLowerCase(); char[] ch = s1.toCharArray(); ch[0] = Character.toUpperCase(ch[0]); StringBuffer sb = new StringBuffer(); boolean flag = false; for(int i=0; i<ch.length; i++) { if( ch[i] <= 'z' && ch[i] >= 'A') { //正常的字符 if(flag == true) { sb.append(Character.toUpperCase(ch[i])); flag = false; } else sb.append(ch[i]); } else if(ch[i] == ' ') { //如果是空格,分两种情况 if(sb.charAt(sb.length()-1) != ' ') sb.append(" "); else continue; } else { //是标点符号 if(ch[i] == '.') flag = true; if(sb.charAt(sb.length()-1) == ' ') { //如果标点前有空格,则删除 sb.deleteCharAt(sb.length()-1); sb.append(ch[i]); sb.append(" "); } else { if(i == ch.length-1) //如果是最后一个字符 sb.append(ch[i]); else { sb.append(ch[i]); sb.append(" "); } } } } return sb.toString(); } public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); while(sc.hasNext()) { String s = sc.nextLine(); String res = dealwith(s); System.out.println(res); } }
}
相关文章推荐
- 用python读取oracle函数返回值
- Hbase教程(三) Hbase集群安装
- 进程间通信各自的特点
- 最短路径树
- 洛谷P1341 无序字母对
- modesim 仿真问题
- Unity4.3.4_2D—刚体移动
- 【总结】485
- java笔记
- 今日头条面试相关
- HTML5-3
- 动态规划算法详解
- Floyd --任意两点之间的最短路问题
- runtime结合category和block动态增加方法以及属性
- hibernate3之核心组件configuration
- 用文件IO而不是stdio输入输出
- Js中诡异的Array.length
- CSS3过渡transition
- 编程是一种美德,是促使一个人不断向上发展的一种原动力。
- 动态规划算法详解