給定乙個 32 位有符號整數,將整數中的數字進行反轉。
示例 1:
輸入: 123 輸出: 321 示例 2:
輸入: -123 輸出: -321 示例 3:
輸入: 120 輸出: 21 注意:
假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 [−231, 231 − 1]。根據這個假設,如果反轉後的整數溢位,則返回 0。
常規思路解題,求餘數,需要注意的是溢位判斷。
class solution
return t;
}};複製**
實現 atoi,將字串轉為整數。
在找到第乙個非空字元之前,需要移除掉字串中的空格字元。如果第乙個非空字元是正號或負號,選取該符號,並將其與後面盡可能多的連續的數字組合起來,這部分字元即為整數的值。如果第乙個非空字元是數字,則直接將其與之後連續的數字字元組合起來,形成整數。
字串可以在形成整數的字元後面包括多餘的字元,這些字元可以被忽略,它們對於函式沒有影響。
當字串中的第乙個非空字串行不是個有效的整數;或字串為空;或字串僅包含空白字元時,則不進行轉換。
若函式不能執行有效的轉換,返回 0。
說明:假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 [−231, 231 − 1]。如果數值超過可表示的範圍,則返回 int_max (231 − 1) 或 int_min (−231) 。
示例 1:
輸入: "42" 輸出: 42 示例 2:
輸入: " -42" 輸出: -42 解釋: 第乙個非空白字元為 '-', 它是乙個負號。 我們盡可能將負號與後面所有連續出現的數字組合起來,最後得到 -42 。 示例 3:
輸入: "4193 with words" 輸出: 4193 解釋: 轉換截止於數字 '3' ,因為它的下乙個字元不為數字。 示例 4:
輸入: "words and 987" 輸出: 0 解釋: 第乙個非空字元是 'w', 但它不是數字或正、負號。 因此無法執行有效的轉換。 示例 5:
輸入: "-91283472332" 輸出: -2147483648 解釋: 數字 "-91283472332" 超過 32 位有符號整數範圍。 因此返回 int_min (−231) 。
其實就是atoi的函式實現,依然較為簡單,依次判斷所有條件即可。空格,正負號,溢位,是否為數字
class solution
int sign = 1, base = 0, i = 0,n = str.size();
while (i < n && str[i] == ' ')
if (str[i] == '+' || str[i] == '-')
while (i = '0' && str[i] <= '9')
base = 10 * base + (str[i] - '0');
i++;
}return sign *base;
}};複製**
乙個機械人位於乙個m x n網格的左上角 (起始點在下圖中標記為「start」 )。
機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角(在下圖中標記為「finish」)。
問總共有多少條不同的路徑?
例如,上圖是乙個7 x 3 的網格。有多少可能的路徑?
說明:m和n的值均不超過 100。
示例 1:
輸入: m = 3, n = 2 輸出: 3 解釋: 從左上角開始,總共有 3 條路徑可以到達右下角。
向右 -> 向右 -> 向下
向右 -> 向下 -> 向右
向下 -> 向右 -> 向右
示例 2:
輸入: m = 7, n = 3 輸出: 28
除了dfs和bfs搜尋演算法,這題其實典型的動態規劃。我們可以假設dp[i][j]的值就是第i行,j列的路徑數,很明顯i = 0.的所有值都是1,j = 0的所有值都為1,只有一條路徑。而除此之外dp[i][j] = dp[i-1][j] + dp[i][j-1];時間複雜度o(nm),空間複雜度o(nm)
class solution
else}}
return dp[m-1][n-1];
}};複製**
給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。
示例:給定乙個鍊錶: 1->2->3->4->5, 和 n = 2.
當刪除了倒數第二個節點後,鍊錶變為 1->2->3->5. 說明:
給定的 n 保證是有效的。
高階:你能嘗試使用一趟掃瞄實現嗎?
思路一趟掃瞄,使用雙指標,可以指定兩個相差n的節點指標遍歷鍊錶,這樣前面的指標遍歷到鍊錶尾部的時候,後面的指標正好在倒數第n+1個節點的位置,刪除節點只需要改變next指向即可。**並不複雜。
class solution
while (head != null)
//刪除結點
end->next = end->next->next;
return headcache->next;
}};複製**
程式設計師演算法練習二
無重複字元的最長子串 給定乙個字串,找出不含有重複字元的最長子串的長度。示例 給定 abcabcbb 沒有重複字元的最長子串是 abc 那麼長度就是3。給定 bbbbb 最長的子串就是 b 長度是1。給定 pwwkew 最長子串是 wke 長度是3。請注意答案必須是乙個子串,pwke 是 子串行 而...
黑馬程式設計師 for練習
namespace for練習 console.writeline sum console.readkey 2 找出100 999間所有水仙花數 水仙花是乙個三位數,每一位數的立方相加等於該數本身 static void main string args console.readkey 3 分解乙個...
練習聊天程式設計師
using system using system.collections.generic using system.linq using system.text namespace 練習聊天機械人 class program static void main string args 機械人 r1 ...