「算法」斐波那契數(shù) & 反轉(zhuǎn)字符串

00509 斐波那契數(shù)

題目描述

斐波那契數(shù),通常用 F(n) 表示,形成的序列稱為斐波那契數(shù)列。該數(shù)列由 0 和 1 開始茅主,后面的每一項(xiàng)數(shù)字都是前面兩項(xiàng)數(shù)字的和。也就是:

F(0) = 0,   F(1) = 1
F(N) = F(N - 1) + F(N - 2), 其中 N > 1.

給定 N土榴,計(jì)算 F(N)诀姚。

示例 1:

輸入:2
輸出:1

解釋:F(2) = F(1) + F(0) = 1 + 0 = 1.

示例 2:

輸入:3
輸出:2

解釋:F(3) = F(2) + F(1) = 1 + 1 = 2.

示例 3:

輸入:4
輸出:3

解釋:F(4) = F(3) + F(2) = 2 + 1 = 3.

提示:

  • 0 ≤ N ≤ 30

力扣地址

解題報(bào)告

本題解由微信公眾號(hào)小猿刷題提供, 錯(cuò)誤之處, 歡迎指正.

基于遞歸實(shí)現(xiàn)

/**
 *  微信公眾號(hào)"小猿刷題"
 */
public int fib(int N) {
    if(N == 0){
        return 0;
    }
    if(N == 1){
        return 1;
    }
    return fib(N-2) + fib(N-1);
}

基于數(shù)組實(shí)現(xiàn)

/**
 *  微信公眾號(hào)"小猿刷題"
 */
public int fib(int N) {
    if(N == 0){
        return 0;
    }
    if(N == 1){
        return 1;
    }
    int [] arr = new int[N+1];
    arr[0] = 0;
    arr[1] = 1;
    for(int i = 2; i <= N; i++){
        arr[i] = arr[i-2] + arr[i-1];
    }
    return arr[N];
}

基于交換實(shí)現(xiàn)

/**
 *  微信公眾號(hào)"小猿刷題"
 */
public int fib(int N) {
    if(N == 0){
        return 0;
    }
    if(N == 1){
        return 1;
    }
    int a = 0;
    int b = 1;
    for(int i = 2; i <= N; i++){
        int sum = a + b;
        a = b;
        b = sum;
    }
    return b;
}
小猿刷題

00344 反轉(zhuǎn)字符串

題目描述

編寫一個(gè)函數(shù),其作用是將輸入的字符串反轉(zhuǎn)過(guò)來(lái)玷禽。輸入字符串以字符數(shù)組 char[] 的形式給出赫段。

不要給另外的數(shù)組分配額外的空間,你必須原地修改輸入數(shù)組矢赁、使用 O(1) 的額外空間解決這一問(wèn)題糯笙。

你可以假設(shè)數(shù)組中的所有字符都是 ASCII 碼表中的可打印字符。

示例 1:

輸入:["h","e","l","l","o"]
輸出:["o","l","l","e","h"]

示例 2:

輸入:["H","a","n","n","a","h"]
輸出:["h","a","n","n","a","H"]

力扣地址

解題報(bào)告

本題解由微信公眾號(hào)小猿刷題提供, 錯(cuò)誤之處, 歡迎指正.

通過(guò)異或?qū)崿F(xiàn)

通過(guò)異或交換字符串的高低位

/**
 *  微信公眾號(hào)"小猿刷題"
 */
public static String reverse(String source){
   char[] chars = source.toCharArray();
   int low = 0;
   int top = chars.length - 1;
   while (low < top){
       chars[low] ^= chars[top];
       chars[top] ^= chars[low];
       chars[low] ^= chars[top];
       low++;
       top--;
   }
   return new String(chars);
}

使用charAt實(shí)現(xiàn)

將目標(biāo)字符串從第一個(gè)字符到最后一個(gè)字符逆向追加

/**
 *  微信公眾號(hào)"小猿刷題"
 */
public static String reverse(String source) {
   int length = source.length();
   String reverse = "";
   for (int i = 0; i < length; i++) {
       reverse = source.charAt(i) + reverse;
   }
   return reverse;
}

使用StringBuffer或者StringBuilder實(shí)現(xiàn)

利用java集合內(nèi)置算法翻轉(zhuǎn)

/**
 *  微信公眾號(hào)"小猿刷題"
 */
public static String reverse(String source) {
   return new StringBuffer(source).reverse().toString();
}

或者

/**
 *  微信公眾號(hào)"小猿刷題"
 */
public static String reverse(String source) {
   return new StringBuilder(source).reverse().toString();
}

通過(guò)棧實(shí)現(xiàn)

利用棧先進(jìn)后出的特點(diǎn)進(jìn)行翻轉(zhuǎn)

/**
 *  微信公眾號(hào)"小猿刷題"
 */
public static String reverse(String source) {
   char[] chars = source.toCharArray();
   Stack<Character> stack = new Stack<Character>();
   for (char ch : chars) {
       stack.push(ch);
   }
   String target = "";
   while (!stack.isEmpty()) {
       target += stack.pop();
   }
   return target;
}

使用遞歸實(shí)現(xiàn)

使用遞歸進(jìn)行左右交換

/**
 *  微信公眾號(hào)"小猿刷題"
 */
public static String reverse(String source) {
   int length = source.length();
   if (length <= 1) {
       return source;
   }
   String left = source.substring(0, length / 2);
   String right = source.substring(length / 2, length);
   return reverse(right) + reverse(left);
}

使用二分法

/**
 *  微信公眾號(hào)"小猿刷題"
 */
public static String reverse(String source) {
   char[] s = source.toCharArray();
   int n = s.length - 1;
   int half = n / 2;
   for (int i = 0; i <= half; i++) {
       char temp = s[i];
       s[i] = s[n - i];
       s[n - i] = temp;
   }
   return new String(s);
}

使用for循環(huán)

/**
 *  微信公眾號(hào)"小猿刷題"
 */
public static String reverse(String source) {
   char[] array = source.toCharArray();
   String reverse = "";
   for (int i = array.length - 1; i >= 0; i--)
       reverse += array[i];

   return reverse;
}
小猿刷題
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
禁止轉(zhuǎn)載撩银,如需轉(zhuǎn)載請(qǐng)通過(guò)簡(jiǎn)信或評(píng)論聯(lián)系作者给涕。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市额获,隨后出現(xiàn)的幾起案子够庙,更是在濱河造成了極大的恐慌,老刑警劉巖抄邀,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件耘眨,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡境肾,警方通過(guò)查閱死者的電腦和手機(jī)剔难,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門胆屿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人钥飞,你說(shuō)我怎么就攤上這事∩狼叮” “怎么了读宙?”我有些...
    開封第一講書人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)楔绞。 經(jīng)常有香客問(wèn)我结闸,道長(zhǎng),這世上最難降的妖魔是什么酒朵? 我笑而不...
    開封第一講書人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任桦锄,我火速辦了婚禮,結(jié)果婚禮上蔫耽,老公的妹妹穿的比我還像新娘结耀。我一直安慰自己,他們只是感情好匙铡,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開白布图甜。 她就那樣靜靜地躺著,像睡著了一般鳖眼。 火紅的嫁衣襯著肌膚如雪黑毅。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評(píng)論 1 285
  • 那天钦讳,我揣著相機(jī)與錄音矿瘦,去河邊找鬼。 笑死愿卒,一個(gè)胖子當(dāng)著我的面吹牛缚去,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播琼开,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼病游,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了稠通?” 一聲冷哼從身側(cè)響起衬衬,我...
    開封第一講書人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎改橘,沒(méi)想到半個(gè)月后滋尉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡飞主,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年狮惜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了高诺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡碾篡,死狀恐怖虱而,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情开泽,我是刑警寧澤牡拇,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站穆律,受9級(jí)特大地震影響惠呼,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜峦耘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一剔蹋、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧辅髓,春花似錦泣崩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至绍弟,卻和暖如春技即,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背樟遣。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工而叼, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人豹悬。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓葵陵,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親瞻佛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子脱篙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容