统计大写字母个数&压缩和去重(过滤)

找出给定字符串中大写字符(即'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]!='\0'){//只要还没到结尾,就一直输出
				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]!='\0'){
				System.out.print(res2[i]);
			}else
				break;
		}
	}

}

  

posted @ 2016-08-20 16:37  GumpYan  阅读(581)  评论(0编辑  收藏  举报