首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

面试中遇到一题目:编写一字符串功能函数(要求算法尽量精简,程序运行率高)解决思路

2012-03-01 
面试中遇到一题目:编写一字符串功能函数(要求算法尽量精简,程序运行率高)编写一字符串功能函数:编写一函数

面试中遇到一题目:编写一字符串功能函数(要求算法尽量精简,程序运行率高)
编写一字符串功能函数:编写一函数,使其有以下功能:将字符串中 '* '排列到字符串前,其他字符顺序不变存储,并返回字符串中 '* '的个数;例如:字符串:DAi**d9*fFEA56**AD,排序后,字符串成为:*****DAid9fFEA56AD,并返回5.

int   thanks(char   *str)
{


请高手...谢谢

[解决办法]
#include <iostream>
#include <string>
using namespace std;


void main()
{
string str;
cin> > str;
int count=0;

for(int i=str.length()-1;i> =0;i--)
{
if(str[i]== '* ')
count++;
else
str[i+count]=str[i];
}

for(i=0;i <=count-1;i++)
str[i]= '* ';

cout < <str < <endl;
}
[解决办法]
int thanks(char *str)
{
char *cur = str;
char tmp;
if(NULL == str)
{
return -1;
}
while(*str != '\0 ')
{
if( '* ' == *str)
{
if(cur == str)
{
str++;
cur = str;
}
else
{
tmp = *str;
*str = *cur;
*cur = tmp;
str = cur +1;
cur++;
}
}
else
{
str++;
}
}
return 0;
}
这个怎么样,实验过的了,完全正确.
[解决办法]
#include <iostream>
using namespace std;

int fun(char *);
void main()
{

char c[]= "***ab**cd**e*f*** ";
cout < <fun(c) < <endl;

}
int fun(char *str)//字符串指针
{
int charNumber=0;
int count=0,countCopy=count;
char *strFlag;
char *strCopy=str;

cout < <str < <endl;

while(*str!= '\0 ')
{
str++;
charNumber++;
if(*str== '* ')
count++;
}
countCopy=count;
str--;
strFlag=str;
count=0;
for(int j=charNumber-1;j> =0;j--)
{

if(*str== '* ')
count++;
else
for(int k=0;k <count;k++)
strFlag++;
*strFlag=*str;
str--;
strFlag=str;
}

for(int i=0;i <count;i++)
{
*str= '* ';
str++;
}
cout < <strCopy < <endl;
return countCopy;
}

应该还可以改进,自己搞一下吧

热点排行