您的位置:首页 > 职场人生

阿里面试算法题--版本号更新

2016-05-20 16:55 260 查看
按照如下规则更新版本号:

5.12.16 -> 5.13.0

5.12.0   -> 5.12.0

最后一位为0则中间的数字+1,否则保持不变

#include "stdafx.h"
#include <iostream>
#include <string>
#include <sstream>
using namespace std;

char* Edition(char* str) {
if(str==NULL)
return NULL;
int n1=-1,n2=-1,n3=-1;
sscanf(str,"%d.%d.%d",&n1,&n2,&n3);
//cout<<str<<endl;cout<<n1<<n2<<n3<<endl;
if(n1==-1||n2==-1||n3==-1)
return NULL;
if(n3==0)
return str;
else
n2++;
//char update[10];
char *update = new char[50];//在堆上创建,这样函数退出后,内存才不会被释放
sprintf(update,"%d.%d.%d",n1,n2,n3);
//cout<<update<<endl;//cout<<n1<<n2<<n3<<endl;
return update;
}

int main()
{
char str[50]="5.13.1";
char *up;
cout<<sizeof(string)<<" "<<sizeof(str)<<" "<<str.size()<<endl;
up = Edition(str);
cout<<up<<endl;
system("pause");
return 0;
}

C和C++下对字符串进行格式转换的方法:
//int转string
int n = 0;
std::stringstream ss;
std::string str;
ss<<n;
ss>>str;

//string转int
std::string str = "123";
int n = atoi(str.c_str());

<pre name="code" class="cpp">//sscanf按格式读出相应的数据类型
char str[] = "15.455";
int i;
float fp;
sscanf( str, "%d", &i ); // 将字符串转换成整数 i = 15
sscanf( str, "%f", &fp ); // 将字符串转换成浮点数 fp = 15.455000
//打印
printf( "Integer: = %d ", i+1 );
printf( "Real: = %f ", fp+1 );
return 0;//sprintf按格式读入字符串 int H, M, S; string time_str; H=seconds/3600; M=(seconds%3600)/60; S=(seconds%3600)%60; char ctime[10]; sprintf(ctime, "%d:%d:%d", H, M, S); // 将整数转换成字符串 time_str=ctime; // 结果

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  面试