整数的倒数
整数的倒数
https://www.nowcoder.com/practice/dd63c30dfef04770b5813e63f5a2615a?tpId=98&tqId=32881&tPage=3&rp=3&ru=%2Fta%2F2019test&qru=%2Fta%2F2019test%2Fquestion-ranking
  题目难度:一星
 考察点:字符串 
 方法:字符串
1.分析:
   这个题的本质其实就是将一个字符串逆序输出,如果是负数的话,就将除了第0位的字符之后的剩余字符串逆序输出就可以了。那么就考虑首位是否为'-':  
     (1). 如果首位为'-',那么我们将i从[1, s.size()/2], 然后交换s[i], s[s.size()-i],此时就能达到除了第0位之外的剩余字符串逆序了,举个例子:  
     s = "-12345"  
     当i=1时,交换s[1]和s[5]即交换1和5,此时s="-52341"  
     当i=2时,交换s[2]和s[4]即交换2和4,此时s="-54321"  
     当i=3时,交换s[3]和s[3]即交换3和3,此时s="-54321"
  
     为什么要计算到s.size()/2呢,那是因为考虑了s.size()为奇数的时候。  
     比如s="-1234"  
      当i=1时,交换s[1]和s[4]即交换1和4,此时s="-4231"   
       如果不考虑s.size()/2=2,那么此时就已经结束循环了,但是这样是不对的,所以要考虑s.size()/2。   
       即当i=2时,交换s[2]和s[3]即交换2和3,此时s="-4321"
   
       (2). 如果首位不是'-',即是一个正数那么就正常逆序就可以了。   
     算法实现:  
 (1). 输入一个字符串s。   (2). 判断首位是否为'-',然后根据上述逆序输出字符串 
 2.复杂度分析:
时间复杂度:O(n)空间复杂度:O(n)
3.代码:
#include <bits/stdc++.h>
using namespace std;
int main(){
    string s; cin>>s;
    if(s[0] == '-') for(int i=1; i<=s.size()/2; i++) swap(s[i], s[s.size()-i]);
    else for(int i=0; i<s.size()/2; i++) swap(s[i], s[s.size()-1-i]);
    cout<<s<<endl;
    return 0;
}
 

