zoukankan      html  css  js  c++  java
  • Give My Text Back

    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:

    1. Each sentence contains at least one word, begins with a letter and ends with a period.

    2. In a sentence the only capitalized letter is the first letter.

    3. In a sentence the words are separated by a single space or a comma and a space.

    4. 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:

    1. Changing the cases of letters.

    2. 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.

    解析

    规则:

    1. 每个标点符号之前没有空格,标点符号之后加空格;
    2. ‘.’之后表示每个句子的开始,首字母应该大写;
    3. 只有每个句子的句首字母应该大写;

    代码:

    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);
    	}
    }
    

    }

  • 相关阅读:
    [转载]使用uiautomator做UI测试
    [转载]Android相关开发网站
    [转载]Android开发必备的21个免费资源和工具
    c# List集合的Find方法适用
    c# GridView Footor列求合计
    c# List集合排序
    mysql中插入多条记录-微软批处理
    mysql中插入多条记录-微软批处理
    VS2005快捷键
    LinqToSql 小例子
  • 原文地址:https://www.cnblogs.com/little-YTMM/p/5678979.html
Copyright © 2011-2022 走看看