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

从面试开始_数组的反转&字符串转数字

2016-12-01 00:04 351 查看
今天面试刚好问到这么一道。记录一下,顺便总结一些相关问题。

数组反转

给定一个数组,并指出反转的初始索引和结束索引,编写此反转方法。

例如:

int a[]={1,2,3,4,5,6,7,8,9,10};

将其反转1到5元素进行反转。结果如下:

5,4,3,2,1,6,7,8,9,10

- 亲爱的代码

#define GET_ARRAY_LEN(arr,len)  {len=(sizeof(arr)/sizeof(arr[0]));}
//不使用STL容器
void Reverse(int[] arr, int begin, int end)
{
int len;
GET_ARRAY_LEN(arr,len)
if(arr==NULL)
{
cout<<"数组为空"<<endl;
return;
}
else if(begin<0||end<0||end>len)
{
cout<<"索引错误"<<endl;
return;
}
while(begin<end)
{
int temp=arr[end];
arr[end]=arr[begin];
arr[begin]=temp;
begin++;
end--;
}
}
//使用STL容器
void Reverse2(int[] arr, int begin, int end)
{
int len;
GET_ARRAY_LEN(arr,len)
if(arr==NULL)
{
cout<<"数组为空"<<endl;
return;
}
else if(begin<0||end<0||end>len)
{
cout<<"索引错误"<<endl;
return;
}
Stack<int> stack=new Stack<int>;
int index=begin;
while(begin<=end)
{
stack.push(arr[begin]);
begin++;
}
while(index<=end)
{
arr[index]=stack.pop();
}
}


字符串转数字

将传入的字符串返回成数字,注意正负数问题。

亲爱的代码:

int string2Int(const sting str)
{
char* pStr=str.c_str();
char* head=pStr;
int result=0;
if(*pStr=='-'||*pStr=='+')
{
pStr++;
}
while(*pStr!=0)
{
if((*pStr<'0')||(*pStr>'9'))
{
break;
}
temp=temp*10+(*pStr-'0');
pStr++;
}
if(*head=='-')
{
temp=-temp;
}
return temp;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐