将字符串中的所有空格去掉,要求时间复杂度O(N)

Posted zhou753099943

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将字符串中的所有空格去掉,要求时间复杂度O(N)相关的知识,希望对你有一定的参考价值。



/<span style="font-size:18px;">/题目:将字符串中的所有空格去掉,要求时间复杂度O(N)
//空间复杂度O(1)
//感想:最开始我以为这个题目很简单,但面试的时候由于紧张,没有写得特别优化,所以被小米给刷了,贼伤心的
//条件的控制很重要,我当时就是因为紧张,条件没有控制好,现在想想真是很尴尬,
//面试出来后我都有一种想法我他妈就不适合当程序员</span>
#include <iostream>
using namespace std;
#include <string.h>
#include <assert.h>

void SetValue(char *str)

	assert(str);
	
	char *tmp=str-1;
	int count=0;//测一下一共调用了多少次
	while(*str !='\\0')
	
		if(*str == ' ' || str <= tmp)
		
			if(tmp <=str)
				tmp=str+1;
			else
				tmp++;
			while(*tmp ==' ' && *tmp !='\\0')
			
				count++;
				tmp++;
			
			*str=*tmp;
			count++;
			if(*str =='\\0')
			
				cout<<"调用的次数:"<<count<<endl;
				return;
							
		
		++str;
	
	cout<<"调用的次数:"<<count<<endl;


int main()

	//char str[]="hello worldxxyywhyabd";//情况1
	char str[]="hello world xx yy    abd";//情况2
	cout<<str<<"  len:"<<strlen(str)<<endl;
	SetValue(str);
	cout<<str<<"  len:"<<strlen(str)<<endl;
	return 0;





以上是关于将字符串中的所有空格去掉,要求时间复杂度O(N)的主要内容,如果未能解决你的问题,请参考以下文章

字符串中的空格替换问题(Java版)

1.线性表

替换空格

java去空格

hive 能去掉字符中间的空格吗

剑指Offer:替换空格