基于visual Studio2013解决面试题之0610删除重复字符串_VC++编程技术

 

题目

基于visual Studio2013解决面试题之0610删除重复字符串_VC++编程技术_02

 

解决代码及点评
/*
	有两个字符串A和B,将同时在A和B中的字符,从A中剔除
	比如A = "i am student", B = "aeu"
	那么结果是A = "i m stdnt";

	这个思想类似基数偶数分开的那个面试题,两头遍历A串,如果字符在B中,则交换到末尾去
*/

#include <iostream>
using namespace std;

int chuxian(char a,char *p)
{
	
	for (int i=0;i<strlen(p);i++)
	{
		if (a==*(p+i))
		{
			return 0;
		}
	}
	return 1;
}
int main()
{
	char a[20]="helloworld";
	char b[20]="lo";
	char *phead=&a[0];
	char *ptail=&a[9];
	//两个指针顺次查找,碰到前面是偶数后面是奇数,交换
	//直到二指针相遇
	while (ptail>=phead)
	{
		if(chuxian(*phead,b)==1) // 如果头上字母没出现,则继续找下一个
		{
			phead++;
			continue;

		}
		if (chuxian(*ptail,b)==0) // 如果尾巴上字母出现了,那么继续下一个
		{
			ptail--;
			continue;

		}
		if (chuxian(*phead,b)==0&&chuxian(*ptail,b)==1) // 否则交换
		{
			char temp=*phead;     //交换的是值,指向数组的位置不变
			*phead=*ptail;
			*ptail=temp;

			//ptail--;     //加上这两句排序失败
			//phead++;
		}

	}

	// 输出
	for (int i=0;i<10;i++)
	{
		cout<<a[i];
	}

	system("pause");
	return 0;
}




代码下载及其运行

 

下载代码并解压后,用VC2013打开interview.sln,并设置对应的启动项目后,点击运行即可,具体步骤如下:

1)设置启动项目:右键点击解决方案,在弹出菜单中选择“设置启动项目”

基于visual Studio2013解决面试题之0610删除重复字符串_VC++编程技术_03

2)在下拉框中选择相应项目,项目名和博客编号一致

基于visual Studio2013解决面试题之0610删除重复字符串_VC++编程技术_04

3)点击“本地Windows调试器”运行

基于visual Studio2013解决面试题之0610删除重复字符串_VC++编程技术_05

 

程序运行结果

基于visual Studio2013解决面试题之0610删除重复字符串_VC++编程技术_06