设计算法并写出代码移除字符串中反复的字符,不能使用额外的缓存空间。

注意: 能够使用额外的一个或两个变量,但不同意额外再开一个数组拷贝。

简单题直接上代码:

#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)的更多相关文章

  1. Python并发编程系列之常用概念剖析:并行 串行 并发 同步 异步 阻塞 非阻塞 进程 线程 协程

    1 引言 并发.并行.串行.同步.异步.阻塞.非阻塞.进程.线程.协程是并发编程中的常见概念,相似却也有却不尽相同,令人头痛,这一篇博文中我们来区分一下这些概念. 2 并发与并行 在解释并发与并行之前 ...

  2. ASP.NET MVC5+EF6+EasyUI 后台管理系统(62)-EF链接串加密

    系列目录 前言: 这一节提供一个简单的功能,这个功能看似简单,找了一下没找到EF链接数据库串的加密帮助文档,只能自己写了,这样也更加符合自己的加密要求 有时候我们发布程序为了避免程序外的SQL链接串明 ...

  3. JQuery使用deferreds串行多个ajax请求

    使用JQuery对多个ajax请求串行执行. HTML代码: <a href="#">Click me!</a> <div></div&g ...

  4. iOS 字典或者数组和JSON串的转换

    在和服务器交互过程中,会iOS 字典或者数组和JSON串的转换,具体互换如下: // 将字典或者数组转化为JSON串 + (NSData *)toJSONData:(id)theData { NSEr ...

  5. iOS:GCD理解1(同步-异步、串行-并行)

    1.并行-异步(ST1与ST2抢占资源) 1-1).获取 并行(全局)队列 ,DISPATCH_QUEUE_PRIORITY_DEFAULT 为默认优先级. dispatch_queue_t queu ...

  6. 关于用sql语句实现一串数字位数不足在左侧补0的技巧

    在日常使用sql做查询插入操作时,我们通常会用到用sql查询一串编号,这串编号由数字组成.为了统一美观,我们记录编号时,统一指定位数,不足的位数我们在其左侧补0.如编号66,我们指定位数为5,则保存数 ...

  7. [LeetCode] Longest Palindrome 最长回文串

    Given a string which consists of lowercase or uppercase letters, find the length of the longest pali ...

  8. [LeetCode] Shortest Palindrome 最短回文串

    Given a string S, you are allowed to convert it to a palindrome by adding characters in front of it. ...

  9. [LeetCode] Palindrome Partitioning II 拆分回文串之二

    Given a string s, partition s such that every substring of the partition is a palindrome. Return the ...

随机推荐

  1. 用qsort排序

     冒泡,快排都是常见的排序方法,这里介绍用头文件里的qsort函数排序.只是自己要先一个cmp函数. #include<stdlib.h>//qsort的头文件 int a[100]= ...

  2. QTableView 固定列宽度(鼠标拖动后,仍可固定)

    QTableView 提供一个函数: void QTableView::setColumnWidth ( int column, int width ) 用于设置column指定的列的宽度 但setC ...

  3. [Android学习笔记]子线程更新UI线程方法之Handler

    关于此笔记 不讨论: 1.不讨论Handler实现细节 2.不讨论android线程派发细节 讨论: 子线程如何简单的使用Handler更新UI 问题: android开发时,如何在子线程更新UI? ...

  4. HBase总结(二十)HBase经常使用shell命令具体说明

    进入hbase shell console $HBASE_HOME/bin/hbase shell 假设有kerberos认证,须要事先使用对应的keytab进行一下认证(使用kinit命令),认证成 ...

  5. STL的一些泛型算法

    源地址:http://blog.csdn.net/byijie/article/details/8142859 从福州大学资料里摘下来的我现在能理解的泛型算法 algorithm min(a,b) 返 ...

  6. birkenfeld / sphinx-contrib — Bitbucket

    birkenfeld / sphinx-contrib — Bitbucket README for sphinx-contrib This repository contains a collect ...

  7. young tableaus

    Young tableaus  这是 Introduction_to_algorithms一个 路学校运动, 我也难倒,互联网没有找到现有的应答. 今天 python 代码贴,供你参考. #! /us ...

  8. C# 开发Chrome内核浏览器(WebKit.net)

    原文地址:http://www.cnblogs.com/linyijia/p/4045333.html

  9. Vagrant - 百度百科

    http://wapbaike.baidu.com/view/9201587.htm?ssid=0&from=844b&uid=3151E6C0905477A13653132D762B ...

  10. I2C分析三

    1 引言 IIC (Inter-Integrated Circuit1总线是一种由Philips公司开发的2线式串行总线,用于连接微控制器及其外围设备.它是同步通信的一种特殊形式,具有接口线少.控制方 ...