在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

word文檔解密方法說(shuō)明

PLC工控專(zhuān)欄 ? 來(lái)源:PLC工控專(zhuān)欄 ? 作者:PLC工控專(zhuān)欄 ? 2022-03-14 09:05 ? 次閱讀

word文檔解密方法,【徽信;sjk6070】當(dāng)我們求取最長(zhǎng)回文子串時(shí),常見(jiàn)的方法就是中心擴(kuò)散法,即從字符中心出發(fā),向兩邊對(duì)比,檢查是否相等,若等于,則繼續(xù)檢查,并使當(dāng)前字符中心對(duì)應(yīng)的最長(zhǎng)回文子串長(zhǎng)度加一,否則,結(jié)束該字符中心的回文檢查,比較與當(dāng)前整個(gè)字符串的最長(zhǎng)回文子串,考慮是否更新整個(gè)字符串的最長(zhǎng)回文子串長(zhǎng)度,繼續(xù)進(jìn)行下一個(gè)字符的判斷。

這種方法的時(shí)間復(fù)雜度仍為 O(n2)O(n^2)O(n2) ,較普通的暴力破解的方法有著不錯(cuò)的優(yōu)化,但也不是最佳的思路,相關(guān)的代碼如下:

public class Solution {
private int max = 0;
private String res = “”;
public String longestPalindrome(String s) {
if (s.length() == 1) { return s; }
for (int i = 0; i < s.length()-1; i++) {
checkPalindromeExpand(s,i,i);
checkPalindromeExpand(s,i,i+1);
}
return res;
}
public void checkPalindromeExpand(String s, int low, int high) {
while (low >= 0 && high < s.length()) {
if (s.charAt(low) == s.charAt(high)) {
if (high - low + 1 > max) {
max = high - low + 1;
res = s.substring(low,high+1);
}
low–; high++;
} else {
return;
}
}
}
}
復(fù)制代碼
當(dāng)然,上面這種算法也有優(yōu)化的空間,基本的思路如下:

統(tǒng)計(jì)字符出現(xiàn)頻率,用數(shù)組表示出現(xiàn)頻率,當(dāng)某個(gè)字符出現(xiàn)頻率為 1 時(shí),認(rèn)為該字符可能為某段回文子串的中心點(diǎn),否則,就不屬于任何一個(gè)回文子串
找出頻度為1的字符a,看以a為單核中心向外擴(kuò)散,求最長(zhǎng)回文;如果沒(méi)有回文,就將它從串中斷開(kāi),進(jìn)行分治;如果回文長(zhǎng)度超過(guò)記錄,就保存它
然后從左到右查回文,只有長(zhǎng)度超過(guò)記錄,才保存
第一次串分割完畢后,進(jìn)行分治,重新統(tǒng)計(jì)頻度,回到1步驟

實(shí)現(xiàn)代碼可以借鑒:小馬哥最長(zhǎng)回文子串長(zhǎng)度求取
Manachar算法
求取最長(zhǎng)回文子串的長(zhǎng)度的最佳方法為 Manachar算法 ,俗稱(chēng)馬拉車(chē)算法。在了解這個(gè)算法之前,我們必須先理解回文子串的一些性質(zhì):

假設(shè)對(duì)于一個(gè)回文串,以及其中心位置,由回文串的性質(zhì)可知,從其中心向兩側(cè)逐步擴(kuò)散到邊界為止,每一步所對(duì)應(yīng)范圍的字串都是回文串

如果我們已知一個(gè)回文串的中心點(diǎn) mid 與其邊界范圍。那么,在大多數(shù)情況下,位于邊界內(nèi)且關(guān)于此中心點(diǎn)對(duì)稱(chēng)的兩點(diǎn)a、b,如果有回文串以 a 為中心,那么以 b 為中心的回文串與以 a 為中心的回文串完全相同。并且,它們之間存在這樣的關(guān)系:b=2×mid?ab = 2 \times mid - ab=2×mid?a

回文串末尾位置到回文串中心位置的字符長(zhǎng)度為該回文串的半徑,若末尾位置的下標(biāo)為 a ,中心位置的下標(biāo)為 id ,回文串長(zhǎng)度半徑為 len ,即半徑為 len 則它們存在如下關(guān)系:
a=id+len÷2a = id + len\div2a=id+len÷2
頭尾添加一個(gè)非 * 的特殊符號(hào)保證不越界,避免多次判斷是否越界。

為方便處理,將字符串長(zhǎng)度可能為奇數(shù),可能為偶數(shù)的兩種情況進(jìn)行合并,即在每個(gè)字符的左右都加上一個(gè)特殊字符,比如 “?*?”。防止越界情況的出現(xiàn),在開(kāi)頭添加一個(gè) “@”可看如下實(shí)踐:

從以上實(shí)踐可得出,由于插入的 # 號(hào)的個(gè)數(shù)必定等于字符個(gè)數(shù)加一再加上 兩個(gè)@ 字符,所以總長(zhǎng)度是偶數(shù)+奇數(shù)=奇數(shù),通過(guò)這種方法,可以將字符串的長(zhǎng)度都化為奇數(shù),這樣就不需要對(duì)長(zhǎng)度奇偶性進(jìn)行分情況討論。
對(duì)字符串完成預(yù)處理之后,定義一個(gè)數(shù)組 len 存入字符串的每個(gè)字符作為回文串中心擴(kuò)散的回文子串長(zhǎng)度且為去掉特殊字符的原字符串的總長(zhǎng)。

最長(zhǎng)回文子串長(zhǎng)度:len[i]?1最長(zhǎng)回文子串長(zhǎng)度:len[i]-1最長(zhǎng)回文子串長(zhǎng)度:len[i]?1
證明方法如下:

轉(zhuǎn)換后,所有回文子串的長(zhǎng)度為奇數(shù),故以中心位置下標(biāo)為 i 的最長(zhǎng)回文串長(zhǎng)度為 2×len[i]?12 \times len[i] - 12×len[i]?1
在回文串中,特殊字符數(shù)為 len[i] ,而除去特殊字符數(shù)剩下的就為原字符數(shù),即 (2×len[i]?1)?len[i]=len[i]?1(2\times len[i]-1)- len[i] = len[i] -1(2×len[i]?1)?len[i]=len[i]?1

問(wèn)題就轉(zhuǎn)換為了求取 len[i] 中所有的數(shù)。
已知 P 的最長(zhǎng)回文子串長(zhǎng)度 len[p],則回文串左邊界為 p - len[p],右邊界為 p + len[p]
假設(shè)在已知中心 p 的左邊有一點(diǎn) j ,其對(duì)稱(chēng)點(diǎn)為 i,

若 i > len[p] + p ,暴力比較 ,通常出現(xiàn)在求取最開(kāi)始時(shí)。
若 i < len[p] + p ,且 len[j] < len[p] + p - i (右邊界到 i 的距離),則他被完全包裹入以 p 為中心的子串中,必有 len[i] = len[j]
若 i = len[p] + p ,且 len[j] >= len[p] + p - i , len[i] = len[j],此時(shí),可能存在超出原有 p 的回文區(qū)域,仍需從邊界 i + 1 + len[i] 出發(fā)一一比較

做完當(dāng)前中心 i 的長(zhǎng)度求取之后,判斷是否 i 的回文區(qū)域右邊界大于原有回文右邊界值,若大于,更新中心點(diǎn)為 i ,右邊界為 i 的回文右邊界。
解決 len 數(shù)組的求取問(wèn)題就基本完成對(duì)于 Manachar 算法的理解。相關(guān)代碼如下:
import java.util.Scanner;

public class Manacher {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.next();
String res = longestPalindrome(str);
System.out.println(res + ": " + res.length());
}
//插入字符
public static String preProcess(String s) {
int n = s.length();
if (n == 0) {
return “^KaTeX parse error: Expected 'EOF', got '}' at position 12: "; }? String…”;
return ret;
}
// 馬拉車(chē)算法
public static String longestPalindrome(String str) {
String S = preProcess(str);
int n = S.length();// 保留回文串的長(zhǎng)度
int[] len = new int[n];
int center = 0, right = 0;// 保留邊界最右的回文核心以及右邊界
// 從第 1 個(gè)字符開(kāi)始
for (int i = 1; i < n - 1; i++) {
// 找出i對(duì)于后面核心的對(duì)稱(chēng)
int mirror = 2 * center - i;
if (right > i) {
// i 在右邊界的范疇內(nèi),看看i的對(duì)稱(chēng)點(diǎn)的回文串長(zhǎng)度,以及i到右邊界的長(zhǎng)度,取兩個(gè)較小的那個(gè)
// 不能溢出之前的邊界,否則就得核心拓展
len[i] = Math.min(right - i, len[mirror]);
} else {
// 超過(guò)范疇了,核心拓展
len[i] = 0;
}

// 核心拓展
while (S.charAt(i + 1 + len[i]) == S.charAt(i - 1 - len[i])) {
len[i]++;
}

// 看看新的索引是不是比之前保留的最右邊界的回文串還要靠右
if (i + len[i] > right) {
// 更新核心
center = i;
// 更新右邊界
right = i + len[i];
}

}

// 通過(guò)回文長(zhǎng)度數(shù)組找出最長(zhǎng)的回文串
int maxLen = 0;
int centerIndex = 0;
for (int i = 1; i < n - 1; i++) {
if (len[i] > maxLen) {
maxLen = len[i];
centerIndex = i;
}
}
int start = (centerIndex - maxLen) / 2;
return str.substring(start, start + maxLen);
}


審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • word
    +關(guān)注

    關(guān)注

    1

    文章

    78

    瀏覽量

    22024
  • 字符
    +關(guān)注

    關(guān)注

    0

    文章

    234

    瀏覽量

    25262
  • 文檔
    +關(guān)注

    關(guān)注

    0

    文章

    48

    瀏覽量

    12023
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    HarmonyOS開(kāi)發(fā)指導(dǎo)類(lèi)文檔更新速遞(上)

    、媒體相關(guān)能力新增、優(yōu)化文檔,方便開(kāi)發(fā)者更加高效使用文檔。 ArkUI(方舟UI框架) ArkUI(方舟UI框架)是一個(gè)簡(jiǎn)潔、高性能、支持跨設(shè)備的UI框架,提供了豐富的應(yīng)用界面開(kāi)發(fā)所需能力。 · 新增使用彈窗: 介紹各類(lèi)彈窗的使用場(chǎng)景與實(shí)現(xiàn)
    的頭像 發(fā)表于 12-30 09:50 ?188次閱讀
    HarmonyOS開(kāi)發(fā)指導(dǎo)類(lèi)<b class='flag-5'>文檔</b>更新速遞(上)

    4G模組加解密藝術(shù):通用函數(shù)的深度解讀

    今天是對(duì)加解密通用函數(shù)的深度解讀,我將詳細(xì)講解,建議收藏,不可錯(cuò)過(guò)。
    的頭像 發(fā)表于 11-12 09:58 ?306次閱讀
    4G模組加<b class='flag-5'>解密</b>藝術(shù):通用函數(shù)的深度解讀

    三菱PLC解密工具

    三菱PLC解密工具能夠讀取機(jī)械設(shè)備的PLC鎖密碼并輕松將其解鎖,輕松解決忘記PLC鎖密碼導(dǎo)致設(shè)備無(wú)法使用的問(wèn)題,并且三菱PLC解密工具也可以用來(lái)給設(shè)備設(shè)置PLC鎖。KK下載站為您提供三菱PLC解密
    發(fā)表于 11-06 10:51 ?1次下載

    請(qǐng)問(wèn)TAS6424E-Q1和TAS6424-Q1的區(qū)別主要有什么 是否有官方的說(shuō)明文檔

    請(qǐng)問(wèn)TAS6424E-Q1和TAS6424-Q1的區(qū)別是否有官方的說(shuō)明文檔,除了數(shù)據(jù)手冊(cè)之外,多謝!
    發(fā)表于 10-09 10:11

    IP5385應(yīng)用說(shuō)明文檔

    IP5385 應(yīng)用說(shuō)明文檔
    發(fā)表于 10-08 09:25 ?11次下載

    超低功耗 AT方案說(shuō)明文檔 新增716s/718p芯片模塊的固件獲取以及測(cè)試方法

    超低功耗 AT方案說(shuō)明文檔 新增716s/718p芯片模塊的固件獲取以及測(cè)試方法
    的頭像 發(fā)表于 07-18 09:36 ?1084次閱讀
    超低功耗 AT方案<b class='flag-5'>說(shuō)明文檔</b> 新增716s/718p芯片模塊的固件獲取以及測(cè)試<b class='flag-5'>方法</b>

    16306鉦銘科通用協(xié)議說(shuō)明文檔V1.2

    16306鉦銘科通用協(xié)議說(shuō)明文檔V1.2
    發(fā)表于 07-09 11:52 ?0次下載

    iPad版微軟Word新增頁(yè)面邊框功能,提升文檔美觀度

    微軟公司今日宣布,啟動(dòng) Microsoft 365 Insider 項(xiàng)目的 iPad 版 Word 應(yīng)用程序的新功能測(cè)試活動(dòng)——頁(yè)面邊框功能開(kāi)發(fā)完成。此項(xiàng)便利有用的功能有助于提升文檔整體美感。
    的頭像 發(fā)表于 05-18 14:05 ?622次閱讀

    芯海應(yīng)用筆記:CSS34P16P(A)型應(yīng)用說(shuō)明文檔

    Type-C 和 USB 供電端口控制解決方案。芯片可根據(jù)用戶(hù)需求靈活配置,操作簡(jiǎn)便, 可快速實(shí)現(xiàn)方案功能。*附件:CSS34P16應(yīng)用說(shuō)明文檔.pdf
    發(fā)表于 05-16 14:46

    解密EMC與EMI:電磁兼容性與電磁干擾?

    解密EMC與EMI:電磁兼容性與電磁干擾?|深圳比創(chuàng)達(dá)電子
    的頭像 發(fā)表于 03-29 10:32 ?1784次閱讀
    <b class='flag-5'>解密</b>EMC與EMI:電磁兼容性與電磁干擾?

    鴻蒙OS開(kāi)發(fā)問(wèn)題:(ArkTS)【 RSA加解密,解決中文亂碼等現(xiàn)象】

    RSA加解密開(kāi)始構(gòu)建工具類(lèi)就是舉步維艱,官方文檔雖然很全,但是還是有很多小瑕疵,在自己經(jīng)過(guò)幾天的時(shí)間,徹底解決了中文亂碼的問(wèn)題、分段加密的問(wèn)題。
    的頭像 發(fā)表于 03-27 21:23 ?1912次閱讀
    鴻蒙OS開(kāi)發(fā)問(wèn)題:(ArkTS)【 RSA加<b class='flag-5'>解密</b>,解決中文亂碼等現(xiàn)象】

    ARM系列STM32F103芯片的解密方法

    本文介紹ARM系列STM32F103芯片的解密方法,其內(nèi)核是Cortex-M3,內(nèi)存從16K-512K都有。
    發(fā)表于 02-28 11:20 ?1824次閱讀

    PCAN軟件的使用操作說(shuō)明

    文檔是PCAN軟件的使用操作說(shuō)明,方便剛接觸PCAN的伙伴們快速上手使用這個(gè)軟件。
    的頭像 發(fā)表于 02-27 11:42 ?1.3w次閱讀
    PCAN軟件的使用操作<b class='flag-5'>說(shuō)明</b>

    CANoe軟件的使用操作說(shuō)明

    文檔是CANoe軟件的使用操作說(shuō)明,方便剛接觸CANoe的伙伴們快速上手使用這個(gè)軟件。
    的頭像 發(fā)表于 02-25 14:30 ?1.3w次閱讀
    CANoe軟件的使用操作<b class='flag-5'>說(shuō)明</b>

    網(wǎng)頁(yè)版Word添加復(fù)選框功能,實(shí)現(xiàn)任務(wù)跟蹤與習(xí)慣養(yǎng)成

    操作方法如下:進(jìn)入網(wǎng)頁(yè)版Word后,用戶(hù)可選用已有文檔進(jìn)行編輯或新建文檔試用此功能;點(diǎn)擊主菜單中的Checklist按鈕或以“Ctrl+,(逗號(hào))”快捷鍵實(shí)現(xiàn)插入;確認(rèn)任務(wù)已完成需選中
    的頭像 發(fā)表于 02-23 14:38 ?778次閱讀
    主站蜘蛛池模板: 日韩欧美中文字幕在线播放 | 色噜噜狠狠色综合久 | freexxxx性欧美 | 麻豆色哟哟网站 | 又粗又大的机巴好爽欧美 | 狠狠色丁香婷婷综合欧美 | 五月天色婷婷丁香 | 狼人射综合 | a级黄色毛片三个搞一 | h在线观看视频免费网站 | 欧美三级一区二区三区 | 国产全部理论片线观看 | 久久频这里精品99香蕉久网址 | 天天擦天天干 | 成人免费国产gav视频在线 | 九月丁香婷婷亚洲综合色 | 国产美女亚洲精品久久久久久 | se97se成人亚洲网站在线观看 | 222aaa免费国产在线观看 | 中文字幕一区二区三区四区五区 | 伊人久久大香线焦在观看 | 91三级在线 | 人人插人人| 一级a毛片免费 | 亚洲成年人影院 | 欧美成人自拍视频 | 天堂在线.www资源在线观看 | 一区二区三区视频免费观看 | 久久久伊香蕉网站 | 啪啪黄色 | 四虎影酷 | 欧美性色欧美a在线观看 | 免费看黄的视频软件 | 午夜色站 | 美女爱爱网站 | 日日摸夜夜爽夜夜爽出水 | 女人张开腿让男人桶视频免费大全 | 免费人成在线观看网站品爱网 | 龙口护士门91午夜国产在线 | 国产叼嘿视频网站在线观看 | 夜夜爽天天操 |