004字符串去重 (keep it up)

设计算法并写出代码移除字符串中重复的字符,不能使用额外的缓存空间。注意: 可以使用额外的一个或两个变量,但不允许额外再开一个数组拷贝。

简单题直接上代码:

#include <stdio.h>
#include <string.h>

void remove_duplicate(char vStr[])
{
	int Len = strlen(vStr);
	if (!Len)
	{
		printf("the string is NULL\n");
		return ;
	}

    int Count = 0;
	for (int i=0; i<Len; ++i)
	{
		if (vStr[i] != '\0')
		{
			vStr[Count++] = vStr[i];
			for (int k=i+1; k<Len; ++k)
			{
				if (vStr[i] == vStr[k])
				{
					vStr[k] = '\0';
				}
			}
		}
	}
	vStr[Count] = '\0';
}

void remove_duplicate2(char vStr[])
{
	int Len = strlen(vStr);
	if (!Len)
	{
		printf("the string is NULL\n");
		return ;
	}

	bool Visited[256];
	memset(Visited, 0, sizeof(Visited));

	int Count = 0;
	for (int i=0; i<Len; ++i)
	{
		if (!Visited[vStr[i]])
		{
			vStr[Count++] = vStr[i];
			Visited[vStr[i]] = true;
		}
	}
	vStr[Count] = '\0';
}

void test()
{
	char Str[] = "13434343435568889hhhhhhhfdcvbb";
	remove_duplicate(Str);
	printf("%s\n", Str);
}

keep it up  每周都写几道算法题,entertainment!

004字符串去重 (keep it up)

时间: 2024-10-11 11:31:32

004字符串去重 (keep it up)的相关文章

js 数组&amp;字符串 去重

Array.prototype.unique1 = function() { var n = []; //一个新的临时数组 for(var i = 0; i < this.length; i++) //遍历当前数组 { //如果当前数组的第i已经保存进了临时数组,那么跳过, //否则把当前项push到临时数组里面 if (n.indexOf(this[i]) == -1) n.push(this[i]); } return n; } Array.prototype.unique2 = funct

2015.4.25-2015.5.1 字符串去重,比例圆设计,中奖机和canvas橡皮擦效果等

1.字符串去重,html模板取值 2.javascript正则表达式之$1...$9 3.jquery插件 4.返回上一页并刷新 解决方法: <a href ="javascript:location.href=document.referrer;"> 5.用webstorm写的手机网站 怎样能用手机预览呢? 解决方法:布署到wamp,xamp,iis上,然后用浏览器生成二维码,扫一扫就可以打开.假如是javaweb项目,挂上tomcat手机直接访问你机子的ip. 6.比例

C# 实现字符串去重

方法一 注:需要.net 3.5框架的支持 string s = "101,102,103,104,105,101,102,103,104,105,106,107,101,108"; s = string.Join(",", s.Split(',').Distinct().ToArray()); 方法二 class Program { static void Main(string[] args) { string result=""; stri

字符串去重及统计各字符字数

突然看到有统计字符串的各个数量和去重的问题,心一想就试了下哈.同时也顺带把数组自带的函数也拿出来,就当作看看记忆下吧 $a = 'eeefffkkkhjk'; /***********统计字符串中各个字符出现次数************/ $total = array(); for($i = 0;$i < strlen($a);$i++){ if(isset($total[$a[$i]])) { $total[$a[$i]] +=1; } else { $total[$a[$i]] = 1; }

JS实现字符串去重,数组去重

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>去重</title> 6 </head> 7 <body> 8 <script type="text/javascript"> 9 /*数组去重*/ 10 function quch

CareerCup之1.3字符串去重

[题目] 原文: 1.3 Design an algorithm and write code to remove the duplicate characters in a string without using any additional buffer. NOTE: One or two additional variables are fine. An extra copy of the array is not. FOLLOW UP Write the test cases for

Flex字符串去重

字符串去重. var str:String = "->a->b->a->c->d->d"; var res1:Array = str.split('->'); var res:ArrayList = new ArrayList(); for(var i:int=0;i<res1.length;i++){ res.addItem(res1[i].toString()); } for(var i:int=0;i<res.length;i

字符串去重并排序

1. 一个简单的去除字符串中字符重复,并排序的算法 void remove_replace (char *str) { /* pos 是构造新字符串时的当前位置 */ int i, pos = 0; unsigned char buf[256] = {0}; for (i = 0; str[i]; i++) { if (1 == (buf[str[i]] += 1)) str[pos++] = str[i]; } memset (str+pos, 0, strlen (str)); } 字符串去

华为机考题 004字符串分割

转自:http://blog.csdn.net/sxl_545/article/details/52412203 华为机考题 004字符串分割 标签: 华为机考刷题 2016-09-02 11:10 46人阅读 评论(0) 收藏 举报  分类: 华为机考刷题(3)  版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 题目描述 •连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组:•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理. 输入描述: 连续输入