日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Raptor-回文字符串判断

發(fā)布時(shí)間:2024/1/1 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Raptor-回文字符串判断 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. 題目描述

輸入一個(gè)字符串,判斷其是否是回文。回文是正向拼寫與反向拼寫都一樣的字符串。例如:"abcba"和"abccba"都是回文。

2. 算法分析

我們在Raptor中輸入字符串,記為 s,在Raptor中,字符串 s 是以字符數(shù)組的形式存在,我們可以利用數(shù)組對回文字符串進(jìn)行判斷。

比如字符數(shù)組 s = "abcdeedcba",這個(gè)數(shù)組的長度也即末端索引位置可以用自帶函數(shù) length_of 來獲取。我們定義兩個(gè)循環(huán)變量 i 和 j,其中 i 記錄起始索引的位置,初始值 i=1;j 記錄末端索引的位置,初始值 j=length_of(s)。利用循環(huán),從兩頭向中間逼近,依次判斷 s[i] 和 s[j] 是否相等。如果一直到 i>=j 時(shí), s[i] 和 s[j] 仍然相等,說明這個(gè)字符串就是回文字符串;如果中間某一步 s[i]=s[j] 不成立,那么退出循環(huán),最后 i 必然小于 j。

這樣,循環(huán)結(jié)束的條件可以設(shè)為滿足?i>=j or s[i] != s[j],其中 i>=j 是回文結(jié)束的條件,s[i]!=s[j]是非回文結(jié)束的條件。(這里的 != 表示不等于)

舉兩個(gè)例子:

2.1 回文字符串例子s = "abcdeedcba"

初始值 i=1, j=length_of(s)=10

  • s[i]= 'a', s[j]='a', 不滿足 i>=j or s[i] != s[j],此時(shí)執(zhí)行 i=i+1, j=j-1 (這時(shí) i=2, j=9);
  • s[i]= 'b', s[j]='b', 不滿足 i>=j or s[i] != s[j],此時(shí)執(zhí)行 i=i+1, j=j-1 (這時(shí) i=3, j=8);
  • s[i]= 'c', s[j]='c', 不滿足 i>=j or s[i] != s[j],此時(shí)執(zhí)行 i=i+1, j=j-1 (這時(shí) i=4, j=7);
  • s[i]= 'd', s[j]='d', 不滿足 i>=j or s[i] != s[j],此時(shí)執(zhí)行 i=i+1, j=j-1 (這時(shí) i=5, j=6);
  • s[i]= 'e', s[j]='e', 不滿足 i>=j or s[i] != s[j],此時(shí)執(zhí)行 i=i+1, j=j-1 (這時(shí) i=6, j=5);
  • s[i]='e', s[j]='e',滿足 i>=j or s[i] != s[j],循環(huán)結(jié)束。

此時(shí) i>=j,字符串 s 是回文字符串。

2.2 非回文字符串例子 s="abceba"

初始值 i=1, j=length_of(s)=6

  • s[i]= 'a', s[j]='a', 不滿足 i>=j or s[i] != s[j],此時(shí)執(zhí)行 i=i+1, j=j-1 (這時(shí) i=2, j=5);
  • s[i]= 'b', s[j]='b', 不滿足 i>=j or s[i] != s[j],此時(shí)執(zhí)行 i=i+1, j=j-1 (這時(shí) i=3, j=4);
  • s[i]= 'c', s[j]='e', 滿足 i>=j or s[i] != s[j],循環(huán)結(jié)束。

流程結(jié)束,此時(shí)不滿足 i>=j,字符串 s 不是回文字符串。

3. 流程圖

?

4.測試結(jié)果

4.1 回文字符串例子s = "abcdeedcba"

?

4.2 非回文字符串例子 s="abceba"

5. 特殊說明 (回文數(shù)字判斷)

本題中的程序僅用于判斷字符串是否回文,無法判斷數(shù)字是否回文,為什么呢?因?yàn)镽aptor對于輸入框中的內(nèi)容,如果僅為數(shù)字,不包含除了數(shù)字之外的其它字符,則當(dāng)做數(shù)字處理。這時(shí),如果我們直接用本程序,就會出現(xiàn)如下錯(cuò)誤 "s is not a 1D array",這時(shí)s僅為一個(gè)數(shù)字,不是一維數(shù)組,無法進(jìn)行數(shù)組索引操作。

如果輸出框中包含除數(shù)字之外的其它字符,那么這個(gè)輸入就會被當(dāng)做一個(gè)字符串,這樣,我們可以借助特殊字符包裹數(shù)字,進(jìn)行回文數(shù)的判斷。例如我們在數(shù)字兩邊加上 "#",輸入變成 #123321#,就可以利用回文字符串的程序來判斷數(shù)字是否為回文數(shù)了,如下:

?當(dāng)然,這里的特殊符號可以任意取,只要包裹在輸入數(shù)字兩邊的一樣就可以了。回文數(shù)判斷相當(dāng)于拓展自回文字符串判斷,需要在輸入數(shù)字的兩邊加上特殊符號,以形成字符串。下一篇博客我們將聚焦回文數(shù)判斷,發(fā)展針對數(shù)字的回文數(shù)判斷程序。

?

?

總結(jié)

以上是生活随笔為你收集整理的Raptor-回文字符串判断的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。