1. 程式人生 > 其它 >C# mysql 插入資料 中文亂碼解決方法

C# mysql 插入資料 中文亂碼解決方法

技術標籤:java演算法

題目 劍指 Offer 46. 把數字翻譯成字串

給定一個數字,我們按照如下規則把它翻譯為字串:0 翻譯成 “a” ,1 翻譯成 “b”,……,11 翻譯成 “l”,……,25 翻譯成 “z”。一個數字可能有多個翻譯。請程式設計實現一個函式,用來計算一個數字有多少種不同的翻譯方法。

示例 1:

輸入: 12258
輸出: 5
解釋: 12258有5種不同的翻譯,分別是"bccfi", “bwfi”, “bczi”, “mcfi"和"mzi”

提示:

0 <= num < 231

思路

f(i) = f(i - 1) + f(i - 2),如果當前字元和下一個字元數值在10和25之間,解釋:f(i)為當前方案數,等於f(i-1)的方案數加f(i - 2)的,僅當如果當前字元和下一個字元數值(如14,為1 4 或14)在10和25之間;否則f(i) = f(i - 1)

複雜度分析

時間:O(logn)
空間: O(1)

程式碼

class Solution {
    public int translateNum(int num) {
        // int[] dp = new int[32];
        // int i = 0;
        // dp[0] = 1;
        // int num1 = num % 10;
        // int num2 = (num / 10) % 10;
        // if(num >= 10 && (num2 == 1 || (num2 == 2 && num1 < 6))) {
// dp[++i] = 2; // } else { // dp[++i] = 1; // } // num = num / 10; // i++; // for(; num > 0; ++i) { // num1 = num % 10; // num2 = (num / 10) % 10; // if(num2 == 1 || (num2 == 2 && num1 < 6)) { // dp[i] = dp[i - 1] + dp[i - 2];
// } else { // dp[i] = dp[i - 1]; // } // num = num / 10; // } // return dp[i - 1]; // dp[1] = 1; // i = 2; // int num1, num2; // for(; num > 0; ++i) { // num1 = num % 10; // num2 = (num / 10) % 10; // if(num2 == 1 || (num2 == 2 && num1 < 6)) { // dp[i] = dp[i - 1] + dp[i - 2]; // } else { // dp[i] = dp[i - 1]; // } // num = num / 10; // } // return dp[i - 1]; // 優化 迴圈陣列 int p = 1, q = 1, r = 1; int num1, num2; for(; num > 0; ) { num1 = num % 10; num2 = (num / 10) % 10; if(num2 == 1 || (num2 == 2 && num1 < 6)) { r = q + p; } else { r = q; } num = num / 10; p = q; q = r; } return r; } }

結果

![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20210115193948208.png