| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1322 人关注过本帖
标题:[讨论]删除字符串中的某一字符 v2.8
取消只看楼主 加入收藏
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
结帖率:100%
收藏
 问题点数:0 回复次数:5 
[讨论]删除字符串中的某一字符 v2.8
/* 请大家提意见,如果有更好方法请分享下! [我在这感谢大家!] */

void strdelchr(char * ar, char ch) /* v2.8 */
{
int i = 0, j = 0;
do
{
while(ar[j] == ch)
j++;
ar[i] = ar[j++];
}while(ar[i++]);
}



/* 请大家提意见,如果有更好的方法请分享下! [我在这感谢大家!] */

[此贴子已经被作者于2007-11-20 21:23:14编辑过]

搜索更多相关主题的帖子: 字符 删除 
2007-11-20 19:10
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
#top
唉,没人回帖

[此贴子已经被作者于2007-11-20 20:13:06编辑过]


—>〉Sun〈<—
2007-11-20 19:56
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
以下是引用nuciewth在2007-11-20 21:14:22的发言:
void strdelchr(char * ar, char ch)
{
int i=0,j=0;
while(ar[i]!='\0')
{
if(ar[i]==ch)
{
j++;
}
else
{
i++;
}
ar[i]=ar[i+j];
}
}




[此贴子已经被作者于2007-11-20 22:00:17编辑过]


—>〉Sun〈<—
2007-11-20 21:27
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 

/* 做了一个测试程序 */

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 10000000

void strdelchr1(char * ar, char ch) /* v2.8 */
{
int i = 0, j = 0;
do
{
while(ar[j] == ch)

j++;
ar[i] = ar[j++];
}while(ar[i++]);
}

void strdelchr2(char * ar, char ch) /* 3 楼 */
{
int i=0,j=0;
while(ar[i]!='\0')
{
if(ar[i] == ch)
j++;
else
i++;
ar[i] = ar[i+j];
}
}

int main(void)
{
int i = 0;
clock_t start, end;
char * ar1 = (char *)malloc(sizeof(char) * MAX);
char * ar2 = (char *)malloc(sizeof(char) * MAX);
srand((unsigned int)time(NULL));
ar1[MAX - 1] = ar2[MAX - 1] = '\0';

while(1)
{
for(i = 0; i < (MAX - 1); i++)
ar1[i] = ar2[i] = ('0' + (rand() % 10));

puts("Start.");

start = clock();
strdelchr1(ar1, '1');
end = clock();
printf("%lf\n", (double)(end - start) / CLOCKS_PER_SEC);

start = clock();
strdelchr2(ar2, '1');
end = clock();
printf("%lf\n", (double)(end - start) / CLOCKS_PER_SEC);

puts("Enter next.");
getchar();
}
return 0;
}


[此贴子已经被作者于2007-11-20 23:15:27编辑过]


—>〉Sun〈<—
2007-11-20 22:31
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
以下是引用ondy在2007-11-20 22:44:38的发言:
do
{
while(ar[j] == ch)
j++;
ar[i] = ar[j++];
}while(ar[i++]);

你没有分析过,时间复杂度么??

O(n^2);

怎么分析。


—>〉Sun〈<—
2007-11-20 22:47
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

[此贴子已经被作者于2007-11-20 23:16:01编辑过]



NLwciTG3.png (20.93 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册

—>〉Sun〈<—
2007-11-20 22:51
快速回复:[讨论]删除字符串中的某一字符 v2.8
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013141 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved