急!高分求教,那位老兄知道怎么把一个字符串中的重复字符过滤掉,谢了!

zywzjx 2004-08-26 09:31:43
急!高分求教,那位老兄知道怎么把一个字符串中的重复字符过滤掉,谢了!

eg.
1) "1112345" "12345"
2) "43247FA3" "43247FA"
...全文
182 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
寻开心 2004-08-27
  • 打赏
  • 举报
回复
#include "stdio.h"
#include "memory.h"
#include "string.h"

char * Filter(char * pChar)
{
int nLen = strlen(pChar);
char * pReturn = new char [nLen];
memset(pReturn, 0, nLen);
char * pTemp = pReturn;

char flag[256]; //ÓÃÓÚͳ¼Æ×Ö·û³öÏֵĴÎÊý¡£
memset(flag, 0, 256);

for (; *pChar; pChar++)
{
if ( ! flag[*pChar] ) {*pTemp = * pChar; pTemp ++;};
flag[*pChar]++;
}
return pReturn;
};

main()
{
char * p1 = "43247FA3";
char * pT = Filter(p1);
delete pT;
return 1;
};
寻开心 2004-08-27
  • 打赏
  • 举报
回复
char * Filter(char * pChar)
{
int nLen = strlen(pChar);
char * pReturn = new char [strlen(pChar)];
memset(pReturn, 0, nLen);
char * pTemp = pReturn;

BYTE flag[256]; //用于统计字符出现的次数。
memset(flag, 0, 256);

for (; *pChar; pChar++)
{
if ( ! flag[*pChar] ) {*pTemp = * pChar; pTemp ++;};
flag[*pChar]++;
}
return pReturn;
};
crazyboy2003 2004-08-27
  • 打赏
  • 举报
回复
c++写法:
告诉你一个快速的方法,申明一点:字符串中字符的ASCII码要小于128
char* Filter(*p_in,len)
{
bit p[128] ;
char* u = new char[len+1];
int i = 0 ;
int s = 0 ;
int m_len = len;
for(int i = 0 ; i < len ;i++)
{
int t = p_in[i] ;
if(p[t])
{
continue ;
}
else
{
p[t] = 1 ;
u[s++] = t ;
}
}
u[s] = 0 ;
return u ;
}
metaphor 2004-08-27
  • 打赏
  • 举报
回复
第二个例子"43247FA3" "43247FA"
中间的4为什么保留?最后的3为什么去掉?
庄鱼 2004-08-26
  • 打赏
  • 举报
回复
void Fn2(const char *s,char *d)
{
unsigned char lab[256]={0},ch;
int i=0,j=0;
while(ch = *(s+i)){
if(lab[ch]){i++;continue;}
lab[ch]=1;
i++;*(d+ j++)=ch;}
}
庄鱼 2004-08-26
  • 打赏
  • 举报
回复
订正:
void Fn1(const char *s,char *d)
{
int i = 0;
while(*d = *(s+i)){
i++;
while(*d == *(s+i))i++;
d++;}
}
庄鱼 2004-08-26
  • 打赏
  • 举报
回复
void Fn1(const char *s,char *d)
{
while(*d = *s){
s++;
while(*d == *s)s++;
d++;}
}
  • 打赏
  • 举报
回复
C语言中有这个函数啊,在串里
programfanny 2004-08-26
  • 打赏
  • 举报
回复
先贴一个过滤连续相同字符的函数。
int dealwith(char *s,char *t)
{
char *p,ch;
p=s;
ch=*p++;
while(*p){
while(ch==*p)p++;
*t++=ch;
ch=*p++;
}
*t++=ch;
*t=0;
return 0;
}
在Windows 10或Windows 11操作系统,用户经常会遇到共享打印机时出现的一系列错误代码,这些错误代码可能会阻碍打印机共享功能的正常使用。常见的错误代码包括0x00000057、0x00000709和0x0000011b,这些代码通常指出了不同的问题,比如权限不足、服务未运行或配置错误等。除此之外,还有一些故障提示如“连接失败”或“内存不足”,这些都可能影响到打印机共享的稳定性。 要解决这些故障,首先要确保打印机已经正确地连接到网络,并且在需要共享的电脑上进行了设置。确保打印机驱动程序是最新的,并且在共享设置没有错误配置。对于权限问题,需要检查网络上的用户账户是否具有足够的权限来访问共享打印机。同时,也要确保打印机服务正在运行,特别是“Print Spooler”服务,因为这是打印机共享服务的核心组件。 在某些情况下,问题可能与操作系统的更新有关,如升级到最新版的Windows 10或Windows 11后可能出现的兼容性问题。这时,可能需要查看微软的官方支持文档来获取特定的解决方案或更新。 对于错误代码0x00000057,这通常是由于没有足够的权限来访问网络打印机或其共享资源,解决方法是确保网络打印机的权限设置正确,包括在组策略设置相应的访问权限。而0x00000709错误可能是由于打印机驱动问题或打印机端口配置错误,可以尝试重新安装或更新打印机驱动来解决。至于0x0000011b错误,这往往是因为打印机队列服务的问题,检查并重启“Print Spooler”服务通常是解决这类问题的常见手段。 至于“连接失败”或“内存不足”这类故障,通常与客户端和打印机之间的网络连接以及打印机本地资源的使用情况有关。检查网络连接,确保打印机所在的网络段没有故障或断。同时,如果打印机的打印队列长时间得不到处理,可能会导致内存不足的情况,这时可能需要清理打印队列或增加打印机的内存配置。 为了帮助用户更快速地解决这些问题,市面上出现了各种打印机共享错误修复工具。这些工具往往通过预设的修复程序来自动检测和修正打印机共享常见的问题。它们可以快速检查打印机驱动、网络连接以及共享设置,并且能够提供一键修复功能,大幅减少了用户自行排查和解决问题的难度。 然而,在使用这些修复工具之前,用户应确保这些工具的来源是安全可靠的,避免因使用不当的修复工具而引发其他系统安全或隐私问题。用户可以到官方平台或者信誉良好的软件提供商处下载这些工具。通过细心检查打印机的共享设置,及时更新驱动程序和服务,以及合理使用修复工具,大多数共享打印机的问题都可以得到有效的解决。

33,027

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧