zoukankan      html  css  js  c++  java
  • 统计大写字母个数&压缩和去重(过滤)

    找出给定字符串中大写字符(即'A'-'Z')的个数

    接口说明

        原型:int CalcCapital(String str);

        返回值:int

    知识点 字符串
    运行时间限制 10M
    内存限制 128
    输入

    输入一个String数据

    输出

    输出string中大写字母的个数

    需考虑字符串为空  如果为空输出0

    样例输入 add123#$%#%#O
    样例输出 1
    import java.util.*;
    public class calUpper{
    	public static void main(String[] args){
    		Scanner cin=new Scanner(System.in);
    		String str=cin.nextLine();
    		int count=0;
    		if(!str.equals(" ")){//注意不要用str!=" "比较字符串
    			for(int i=0;i<str.length();i++){
    			char c=str.charAt(i);
    			if(c>='A' && c<='Z'){
    				count++;
    			}
    		}
    		}else{
    			System.out.println(0);			
    		}
    		System.out.println("count:"+count);
    	}
    		
    }		 
    

      

    题目一:通过键盘输入一串小写字母(a~z)组成的字符串。
              请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。
      比如字符串“abacacde”过滤结果为“abcde”。

     示例
      输入:“deefd”        输出:“def”
      输入:“afafafaf”     输出:“af”
      输入:“pppppppp”     输出:“p”

    题二:题目描述(40分):
      通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出现的重复字母进行压缩,并输出压缩后的字符串。
      压缩规则:
      1. 仅压缩连续重复出现的字符。比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc".
      2. 压缩字段的格式为"字符重复的次数+字符"。例如:字符串"xxxyyyyyyz"压缩后就成为"3x6yz"

     示例 
      输入:“cccddecc”   输出:“3c2de2c”
      输入:“adef”     输出:“adef”
      输入:“pppppppp” 输出:“8p”

    class Test1 
    {	
    	//去掉重复字符
    	static void stringFilter(char InputStr[],long len,char OutputStr[]){
    		int[] a=new int[26];
    		int num=0;
    		int j=0;//OutputStr[]计数
    		for(int i=0;i<len;i++){
    			num=InputStr[i]-'a';
    			if(a[num]==0){//没出现过
    				OutputStr[j]=InputStr[i];
    				j++;//输出下标增加一次
    				a[num]=1;//赋值完了之后就置1
    			}
    		}
    	}
    	
    	//压缩字符
    	static void stringZip(char InputStr[],long len,char OutputStr[]){
    		char temp=' ';
    		int num=1;//计算重复的个数
    		int point=0;
    		for(int i=0;i<len;i++){
    			if(InputStr[i]==temp){
    				num++;
    			}else{
    				if(num!=1){
    					OutputStr[point++]=(char)(num+'0');//把重复的个数输出
    					num=1;
    				}
    				OutputStr[point++]=temp;//把重复的字符输出
    				temp=InputStr[i];//把新的字符给temp
    			}
    		}
    
    	}
    	public static void main(String[] args) 
    	{
    		char[] test={'a','a','a','c','b','b','b','a','a','c','a','d','d','d','c','d','e'};
    		long len=test.length;
    		char[] res=new char[(int)len];
    		stringFilter(test,len,res);
    		int j=res.length;
    		for(int i=0;i<j;i++){
    			if(res[i]!=''){//只要还没到结尾,就一直输出
    				System.out.print(res[i]);
    			}else
    				break;
    		}
    
    		char[] res2=new char[(int)(2*len)];
    		stringZip(test,len,res2);
    		for(int i=0;i<2*len;i++){
    			if(res2[i]!=''){
    				System.out.print(res2[i]);
    			}else
    				break;
    		}
    	}
    
    }
    

      

  • 相关阅读:
    游记-HNOI2019
    题解-COCI2015Norma
    题解-Codeforces671D Roads in Yusland
    题解-POI2014 Supercomputer
    笔记-莫队的强制在线
    题解-HAOI2018全套
    题解-UOJ455 雪灾与外卖
    题解-Codeforces917D Stranger Trees
    题解-AtCoder Code-Festival2017 Final-J Tree MST
    Linux 配置svn
  • 原文地址:https://www.cnblogs.com/GumpYan/p/5790724.html
Copyright © 2011-2022 走看看