程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> leetcode344——Reverse String(C++),leetcode344reverse

leetcode344——Reverse String(C++),leetcode344reverse

編輯:C++入門知識

leetcode344——Reverse String(C++),leetcode344reverse


Write a function that takes a string as input and returns the string reversed.

Example:
Given s = "hello", return "olleh".

個人博客:http://www.cnblogs.com/wdfwolf3/。

這道題就是簡單的字符串逆置,在C++中字符串類型可以作為數組方式處理,所以經典的數組逆置就可以完成。這裡提供兩種思路:

1.classic方法頭尾交換(16ms)

class Solution {
public:
    string reverseString(string s) {
        int i=0,j=s.size()-1;
        while(i<j)
        {
            swap(s[i],s[j]);
            i++;
            j--;
        }
        return s;
    }
};

2.recursion方法分治遞歸(44ms)

將字符串分為前後兩部分,分別逆置然後合並起來,合並時自然是後半部分在前,前半部分在後。用到字符串截取函數string.substr(),它接收兩個參數,第一個為位置索引,即截取的開始位置,默認參數為0,就是字符串的開始;第二個參數為截取字符的數目,如果省略,就是指截取到字符串的末尾。

class Solution {
public:
    string reverseString(string s) {
        int length=s.size();
        if(length<2)
            return s;
        return reverseString(s.substr(length/2))+reverseString(s.substr(0,length/2));
    }
    
};

 

P.S.最後關於swap交換元素介紹兩個思路:

1.tmp中間變量,最熟悉的方法。

  tmp=i;

  i=tmp;

  j=tmp;

2.bit的按位抑或^原理,即m^m=0,0^m=m。

  m=m&n;

  n=m&n;                 等價於      n=m&n&n=m;

  m=m&n;              m=m&n&m=n;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved