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

这是华为2013的一个机试题,会好半天才想出来,用了三个for循环,可能有点繁琐,但只要慢慢看还是好理解的,

题目:

通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。

比如字符串“abacacde”过滤结果为“abcde”。

#include<stdio.h>
#include<string.h>
void main()
{
	char a[]="abacacde";
	int length=strlen(a);//首先求长度

	for(int i=0;a[i]!='\0';i++) //先确定要一个字符
	{
		for(int j=i+1;j<length;j++) //检索当前位置的值和后面的所以值进行检索
		{
			if(a[i]==a[j])   //确定一个值后与整个字符串每一个字符进行比较
			{
				for(int k=0;k<length-j;k++)//移动删除j位置的值
				{
					a[j+k]=a[j+k+1];
				}
				length--;//删除一个后长度减一
				j=j-1; //退回到j开始的位置,因为跳出if后j会自加一次,所以要先减1
			}
		}
	}
	printf("%s\n",a);
}

时间: 2024-10-01 10:17:15

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

java编程:输入一串小写字符串,统计每个字母出现的次数

*需求:统计字符串中每个字母: * 说明:编写程序,提示用户输入一个字符串, * 然后统计字符串中每个字母出现的个数,忽略字母的大小写. * * 原理: * 1.使用String类中的toLowerCase()方法,将字符串中的大写字母转换成小写形式. * 2.构造一个具有26个int值得数组ch ,每个元素记录一个字母出现的次数. *     即,ch[0]记录a的个数,ch[1]记录b的个数. * 3.对字符中的每一个字符,判断其是否小写字母,如果是,则数组中的相应计数器加1. 第一种风格的

【任意输入一串整数输出该数的位数】新手每天学写C程序(1)

#include"stdio.h" int main() { int a; int n=0; scanf("%d",&a); n++; a=a/10; while(a>0) { n++; a=a/10; } printf("%d",n); return 0; } [任意输入一串整数输出该数的位数]新手每天学写C程序(1)

已知s.txt文件中有一个这样的字符串 请编写程序读取数据内容,把数据排序后写入 ss.txt文件

package cn.idcast5; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.Arrays; /* * 需求:已知s.txt文件中有一个这样

11.5 排序后的字符串数组,其中散布着空字符串,编写一个方法,找出给定字符串的位置。

二分法变体,当查找到mid元素是空串时,同时向两边扩散寻找不为空串的索引作为mid,继续执行二分. public class Solution { public int search(String[] list, String str) { if (list == null || list.length == 0 || str == null || str.isEmpty()) return -1; return searchHelper(list, str, 0, list.length -

在控制台输入一串英文字符,然后统计出每个字母出现的次数【忽略大小写】

import java.util.Scanner; public class Demo2 { public static void main(String[] args) { //首先输入一串字符,并将字符转化为小写 Scanner scanner = new Scanner(System.in); System.out.println("请输入一串英文字母"); char[] str = scanner.next().toLowerCase().toCharArray(); //利用

密码强度正则表达式 – 必须包含大写字母,小写字母和数字,至少8个字符等

发表于 2017年09月8日 by 天涯孤雁 被浏览 3,953 次 分享到: 小编推荐:掘金是一个高质量的技术社区,从 ECMAScript 6 到 Vue.js,性能优化到开源类库,让你不错过前端开发的每一个技术干货.各大应用市场搜索「掘金」即可下载APP,技术干货尽在掌握.. 需要一个密码强度正则表达式在用户注册时校验用户密码强度:密码至少8个字符,包括1个大写字母,1个小写字母和1个数字或特殊字符,例如#,?,!.网上搜索了一些解决方案分享给大家. 方案一 至少8-16个字符,至少1个大

小白校招机考入坑之从键盘输入java的各种数据类型

.bq { height: 14px; line-height: 14px; border-left: solid 3px #e41c1e; padding-left: 10px; color: #666; font-size: 14px } //1.从键盘输入一个整型(其他基本类型类似) Scanner sc =new Scanner(System.in); sc.hasNextInt(); int str1 = sc.nextInt(); //2.从键盘输入一个定长的整型数组 int[] a

面试题:编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 &quot;&quot;。(c++实现)

实例说明 示例 1: 输入: ["flower","flow","flight"] 输出: "fl" 示例 2: 输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀. 说明: 所有输入只包含小写字母 a-z . 实现方法: #include<iostream> #include<vec

Java不规则字符串按照逗号分割的解析方法(字段中又含有逗号)

/** * Java字符串逗号分割解析方法 * 本专门针对双引号中还有逗号或者某个字段无双引号的情况而设计的 * 例如要将 字符串 String sss="101,\"a\",\"中国,江苏\",\"b\",\"中国,北京\",1,0,\"c\""按照逗号进行分割解析; * 正确的split的结果是 (101)(a)( 中国,江苏) ( b)( 中国,北京) ( 1)( 0)( c) *