【LeetCode】簡單題目集

Bonstoppo發表於2018-12-08

LeetCode的問題有趣的地方在於人家直接給了一個介面,相當於只需要寫了一個函式就可以了,我是不知道多個呼叫函式會怎麼做。對於LeetCode的刷題的方法,其實可以看看知乎就可以啦。

知乎連結:Leetcode刷題指南

這幾條意見也貼出來,對於未來的愉快的刷題有著很大的作用。

一定在理清楚思路之後再去程式設計。我喜歡的一個比喻就是,對於演算法就像是在做一道英語數學題,英語不是最重要的(當然不是在說不重要),反而背後的數學是最重要的,一定要避免"一頓操作猛如虎,一看戰績0-5"這種問題。捋清楚思路,再去動筆。好像寫作文啊。。。>_< !

2.整數反轉

class Solution {
public:
    int reverse(int x) {
    long i = 0;
	long t = x;
	//直接轉換的函式,不必轉存// 
	while(t != 0){
		i = 10 * i + t % 10;
		t = t / 10;
	}
	if(i < INT_MIN || i > INT_MAX){//INT_MAX和 INT_MIN的意思是指臨界值// 
		return 0;
	}
	return i;
    }
};

3.迴文數

注意要點:不使用字串處理迴文數的操作。掐頭去尾,一次抬走兩位。

class Solution {
public:
    bool isPalindrome(int x) {
        int d = 1;
        if(x < 0)	return false;//小於0的情況//
	else{
	    while(x / d >= 10) d *= 10;//先去求位數//
	    while(x > 0){
		    int a = x / d;//最高位//
		    int b = x % 10;//最低位// 
		    if(a != b)	return false;
	            x = x % d / 10;//掐頭去尾//
		    d = d / 100;//一次去兩位// 
	   } 
        }
        return true;
    }
};

14.最長公共字首

在string型別中也可以使用push_back(),其作用就是類似於vector,可以將東西壓入string型別中。

其次,在C++和C中,auto的型別也是不同的。具體的情況可以參考這篇文章:淺析C語言auto關鍵字和C++ 中的auto關鍵字

我在這個地方大概總結以下他說的:在C語言中:auto是一種最為廣泛的變數,在C語言中預設的是int型別;而在C++中,C++中的auto關鍵字是一個型別說明符,通過變數的初始值或者表示式中參與運算的資料型別來推斷變數的型別。也就是說,不初始化的話,我auto自己都不知道自己是個什麼東西。

這個題目思路很清晰,但是這些細節需要再去考慮。

class Solution {
public:
    string prefix2(string& str1, string& str2){
        if(str1.empty() || str2.empty()){
            return "";
        }
        string res;
        auto sp1 = str1.begin();
        auto sp2 = str2.begin();
        while(sp1!=str1.end() && sp2!=str2.end()){
            if(*sp1 == *sp2){
                res.push_back(*sp1);
                sp1++;
                sp2++;
            }
            else{
                return res;
            }
        }
        return res;
    }
    string longestCommonPrefix(vector<string>& strs) {
        //先考慮特殊情況//
        if(strs.empty()){
        return "";
        }
        if(strs.size()==1){
        return strs[0];
        }

        string res = strs[0];
        for(int i=1; i < strs.size(); i++){
            res = prefix2(res, strs[i]);
        }

        return res;
    }
};

 

 

 

 

 

相關文章