关于字符串 “*****AB**C*D*****” 中前缀、后缀和中间 '*' 的处理
一、删除前缀 '*'
#include<iostream>
#include<cstdio> using namespace std; //主函数
int main()
{
char chr[],*b,*p; //字符串缓冲区;字符串头指针;字符串临时指针
int chr_num=,b_num=; //输入的字符串中字符的个数;输入的字符串中前缀 * 的个数
int i; //输入
cout<<"Please input a string:"<<endl;
gets(chr); //统计输入的字符串中字符的个数
p=chr; // p 指向字符串的第一个字符
while(*p++)
{
chr_num++;
} //统计输入的字符串中前缀 * 的个数
b=chr; // b 指向字符串的第一个字符
while(*b++=='*')
{
b_num++;
} //删除输入的字符串中的前缀 *
for(i=;i<chr_num-b_num;i++)
{
chr[i]=chr[i+b_num];
}
chr[i]='\0'; //输出
cout<<"The result:"<<endl;
puts(chr); return ;
}
二、删除后缀 '*'
#include<iostream>
#include<cstdio> using namespace std; //主函数
int main()
{
char chr[],*t,*p; //字符串缓冲区;字符串尾指针;字符串临时指针
int chr_num=,t_num=; //输入的字符串中字符的个数;输入的字符串中后缀 * 的个数 //输入
cout<<"Please input a string:"<<endl;
gets(chr); //统计输入的字符串中字符的个数
p=chr; // p 指向字符串的第一个字符
while(*p++)
{
chr_num++;
} //统计输入的字符串中后缀 * 的个数
t=chr+chr_num-; // t 指向字符串的最后一个字符
while(*t--=='*')
{
t_num++;
} //删除输入的字符串中的后缀 *
chr[chr_num-t_num]='\0'; //输出
cout<<"The result:"<<endl;
puts(chr); return ;
}
三、删除前缀和后缀 '*'
#include<iostream>
#include<cstdio> using namespace std; //主函数
int main()
{
char chr[],*b,*t,*p; //字符串缓冲区;字符串头指针;字符串尾指针;字符串临时指针
int chr_num=,b_num=,t_num=; //输入的字符串中字符的个数;输入的字符串中前缀 * 的个数;输入的字符串中后缀 * 的个数
int i; //输入
cout<<"Please input a string:"<<endl;
gets(chr); //统计输入的字符串中字符的个数
p=chr; // p 指向字符串的第一个字符
while(*p++)
{
chr_num++;
} //统计输入的字符串中前缀 * 的个数
b=chr; // b 指向字符串的第一个字符
while(*b++=='*')
{
b_num++;
} //统计输入的字符串中后缀 * 的个数
t=chr+chr_num-; // t 指向字符串的最后一个字符
while(*t--=='*')
{
t_num++;
} //删除输入的字符串中的前缀和后缀 *
for(i=;i<chr_num-b_num-t_num;i++)
{
chr[i]=chr[i+b_num];
}
chr[i]='\0'; //输出
cout<<"The result:"<<endl;
puts(chr); return ;
}
四、删除中间 '*'
#include<iostream>
#include<cstdio> using namespace std; //主函数
int main()
{
char chr[],*b,*t,*p; //字符串缓冲区;字符串头指针;字符串尾指针;字符串临时指针
int chr_num=; //输入的字符串中字符的个数;输入的字符串中前缀 * 的个数;输入的字符串中后缀 * 的个数
int i; //输入
cout<<"Please input a string:"<<endl;
gets(chr); //统计输入的字符串中字符的个数
p=chr; // p 指向字符串的第一个字符
while(*p++)
{
chr_num++;
} //令 b 指向字符串中前缀 * 之后的第一个字符
b=chr; // b 指向字符串的第一个字符
while(*b++=='*'); //令 t 指向字符串中后缀 * 之前的第一个字符
t=chr+chr_num-; // t 指向字符串的最后一个字符
while(*t--=='*'); //删除字符串中间的 *
p=b; //令 p 指向字符串中前缀 * 之后的第一个字符
while(b<=t)
{
if(*b!='*')
{
*p=*b;
p++;
b++;
}
else
{
b++;
}
}
++t; //令 t 指向字符串中后缀 * 的第一个 *
while(*t)
{
*p=*t;
p++;
t++;
}
*p='\0'; //输出
cout<<"The result:"<<endl;
puts(chr); return ;
}
五、把字符串中的前缀 * 移动到字符串的末尾
#include<iostream>
#include<cstdio> using namespace std; //主函数
int main()
{
char chr[],*b,*p; //字符串缓冲区;字符串头指针;字符串尾指针;字符串临时指针
int chr_num=,b_num=; //输入的字符串中字符的个数;输入的字符串中前缀 * 的个数
int i; //输入
cout<<"Please input a string:"<<endl;
gets(chr); //统计输入的字符串中字符的个数
p=chr; // p 指向字符串的第一个字符
while(*p++)
{
chr_num++;
} //统计输入的字符串中前缀 * 的个数
b=chr; // b 指向字符串的第一个字符
while(*b++=='*')
{
b_num++;
} //把字符串中的前缀 * 移动到字符串的末尾
for(i=;i<chr_num-b_num;i++) //删除输入的字符串中的前缀 *
{
chr[i]=chr[i+b_num];
}
while(i<chr_num) //在字符串的末尾添加与前缀个数相同的 *
{
chr[i++]='*';
}
chr[i]='\0'; //输出
cout<<"The result:"<<endl;
puts(chr); return ;
}
六、把字符串中的后缀 * 移动到字符串的开头
#include<iostream>
#include<cstdio> using namespace std; //主函数
int main()
{
char chr[],*b,*t,*p; //字符串缓冲区;字符串头指针;字符串尾指针;字符串临时指针
int chr_num=,b_num=,t_num=; //输入的字符串中字符的个数;输入的字符串中前缀 * 的个数;输入的字符串中后缀 * 的个数
int i; //输入
cout<<"Please input a string:"<<endl;
gets(chr); //统计输入的字符串中字符的个数
p=chr; // p 指向字符串的第一个字符
while(*p++)
{
chr_num++;
} //统计输入的字符串中前缀 * 的个数
b=chr; // b 指向字符串的第一个字符
while(*b++=='*')
{
b_num++;
} //统计输入的字符串中后缀 * 的个数
t=chr+chr_num-; // t 指向字符串的最后一个字符
while(*t--=='*')
{
t_num++;
} //把字符串中的后缀 * 移动到字符串的开头
for(i=chr_num-t_num-;i>=;i--) //删除输入的字符串中的后缀 *
{
chr[i+t_num]=chr[i];
}
for(i=;i<t_num;i++) //在字符串的开头添加与后缀个数相同的 *
{
chr[i]='*';
} //输出
cout<<"The result:"<<endl;
puts(chr); return ;
}
七、使字符串的前缀 * 不多于 n 个
#include<iostream>
#include<cstdio> using namespace std; //主函数
int main()
{
char chr[],*b,*p; //字符串缓冲区;字符串头指针;字符串尾指针;字符串临时指针
int chr_num=,b_num=; //输入的字符串中字符的个数;输入的字符串中前缀 * 的个数;输入的字符串中后缀 * 的个数
int i,n=; //输入
cout<<"Please input a string:"<<endl;
gets(chr); //统计输入的字符串中字符的个数
p=chr; // p 指向字符串的第一个字符
while(*p++)
{
chr_num++;
} //统计输入的字符串中前缀 * 的个数
b=chr; // b 指向字符串的第一个字符
while(*b++=='*')
{
b_num++;
} //使字符串的前缀 * 不多于 n 个
if(b_num>n)
{
//删除输入的字符串中的前缀和后缀 *
for(i=;i<chr_num-b_num;i++)
{
chr[i+n]=chr[i+b_num];
}
chr[i+n]='\0';
} //输出
cout<<"The result:"<<endl;
puts(chr); return ;
}
八、使字符串的后缀 * 不多于 n 个
#include<iostream>
#include<cstdio> using namespace std; //主函数
int main()
{
char chr[],*t,*p; //字符串缓冲区;字符串头指针;字符串尾指针;字符串临时指针
int chr_num=,t_num=; //输入的字符串中字符的个数;输入的字符串中前缀 * 的个数;输入的字符串中后缀 * 的个数
int i,n=; //输入
cout<<"Please input a string:"<<endl;
gets(chr); //统计输入的字符串中字符的个数
p=chr; // p 指向字符串的第一个字符
while(*p++)
{
chr_num++;
} //统计输入的字符串中后缀 * 的个数
t=chr+chr_num-; // t 指向字符串的最后一个字符
while(*t--=='*')
{
t_num++;
} //使字符串的后缀 * 不多于 n 个
if(t_num>n)
{
chr[chr_num-t_num+n]='\0';
} //输出
cout<<"The result:"<<endl;
puts(chr); return ;
}
关于字符串 “*****AB**C*D*****” 中前缀、后缀和中间 '*' 的处理的更多相关文章
- Java中++,--,前缀后缀表达值的不同,与^的值计算
package 习题1; /** * ++ -- 与 ^ 的一些计算 * @author SeeClanUkyo * */ public class Test4 { public static voi ...
- hdoj 2594 Simpsons’ Hidden Talents 【KMP】【求串的最长公共前缀后缀】
Simpsons' Hidden Talents Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java ...
- UVA - 11475 Extend to Palindrome —— 字符串哈希 or KMP or 后缀数组
题目链接:https://vjudge.net/problem/UVA-11475 题意: 给出一个字符串,问在该字符串后面至少添加几个字符,使得其成为回文串,并输出该回文串. 题解: 实际上是求该字 ...
- POJ 2752 (KMP 所有可能长度的前缀后缀) Seek the Name, Seek the Fame
题意: 求一个字符串的相同前缀后缀的所有可能的长度,这里该字符串其本身也算自己的前缀和后缀. 分析: 我们知道next数组的性质是,该字符之前的字符串的最大相同前缀后缀. 既然知道了最大的,即next ...
- c++实验4 栈及栈的应用+回文+中、后缀表达式
栈及栈的应用+回文+中.后缀表达式 1.栈顺序存储结构的基本操作算法实现 (1)栈顺序存储结构的类定义: class SeqStack { private: int maxsize; DataType ...
- 1280 前缀后缀集合(map)
1280 前缀后缀集合 题目来源: Codility 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 一个数组包含N个正整数,其中有些是重复的.一个前缀后缀集是满足 ...
- python的正则表达式 re-------可以在字符串前加上 r 这个前缀来避免部分疑惑,因为 r 开头的python字符串是 raw 字符串,所以里面的所有字符都不会被转义
正则表达式使用反斜杆(\)来转义特殊字符,使其可以匹配字符本身,而不是指定其他特殊的含义.这可能会和python字面意义上的字符串转义相冲突,这也许有些令人费解.比如,要匹配一个反斜杆本身,你也许要用 ...
- Java基础之写文件——将多个字符串写入到文件中(WriteProverbs)
控制台程序,将一系列有用的格言写入到文件中. 本例使用通道把不同长度的字符串写入到文件中,为了方便从文件中恢复字符串,将每个字符串的长度写入到文件中紧靠字符串本身前面的位置,这可以告知在读取字符串之前 ...
- sql 解析字符串添加到临时表中 sql存储过程in 参数输入
sql 解析字符串添加到临时表中 sql存储过程in 参数输入 解决方法 把字符串解析 添加到 临时表中 SELECT * into #临时表 FROM dbo.Func_SplitOneCol ...
随机推荐
- Svn 的 Update 与Maven 的update project 作用有什么区别
1.svn update只是更新项目的SVN仓库.2.maven update project则是进行一系列的操作(跟自己的配置有关,可能包含一下操作):更新SVN.更新项目关联.编译项目.构建发布等 ...
- 浅议tomcat与classloader
关于tomcat和classloader的文章,网上多如牛毛,且互相转载,所以大多数搜到的基本上是讲到了tomcat中classloader的几个层次,对于初接触classloader,看了之后还是只 ...
- python 装 ez_setup.py 出错
python 装 ez_setup.py出错setuptools,pip,install,UnicodeDecodeError: 'ascii' codec can't decode byte.解决: ...
- CSS hacker(兼容IE6、7、8)
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">这行代码是永远以最新的 ...
- php-fpm参数调优
关于php-fpm.conf参数调优,只对重要的参数进程调优.其它可参数前辈的. http://php.net/manual/zh/install.fpm.configuration.php (官方的 ...
- JavaScript--模块化编程(笔记)
一直对JS都是一知半解,最近遇到这方面问题,所以在网上学习了一下,现在还没有完全明白,先贴出笔记; 第一章 JavaScript模块化编程(一):模块的写法 一 原始写法 // 模块就是实现特定功能的 ...
- RC4 加密算法asp版
Function RC4(data, Key) ), k(), outstr, Acii, j, tst, xre1, xre2, temp, x, t, y, qwe, zxc s(i) = i - ...
- 运用DataTable进行行转列操作
public DataTable GetReverseTable(DataTable p_Table) { DataTable _Table = new DataTable(); ; i != p_T ...
- Exchange之准备AD及域
1. 若有旧版本的Exchange 2003,则需要执行以下命令: setup.com /PrepareLegacyExchangePermissions 2. 准备架 ...
- Sql日期时间格式转换;取年 月 日,函数:DateName()、DATEPART()
一.sql server2000中使用convert来取得datetime数据类型样式(全) 日期数据格式的处理,两个示例: CONVERT(varchar(16), 时间一, 20) 结果:2007 ...