LeetCode //C - 214. Shortest Palindrome

214. Shortest Palindrome

You are given a string s. You can convert s to a palindrome by adding characters in front of it.

Return the shortest palindrome you can find by performing this transformation.
?

Example 1:

Input: s = “aacecaaa”
Output: “aaacecaaa”.

Example 2:

Input: s = “abcd”
Output: “dcbabcd”

Constraints:
  • 0 < = s . l e n g t h < = 5 ? 1 0 4 0 <= s.length <= 5 * 10^4 0<=s.length<=5?104
  • s consists of lowercase English letters only.

From: LeetCode
Link: 214. Shortest Palindrome


Solution:

Ideas:
  1. Reverse the input string: This will help us find the longest palindromic prefix.
  2. Find the longest palindromic prefix: By comparing the original string with the suffixes of the reversed string, we determine the longest prefix of the original string that is also a suffix of the reversed string.
  3. Form the result string: Add the necessary characters (the part of the reversed string that does not match the prefix) in front of the original string to make it a palindrome.
Code:
void reverseString(char* str) {int n = strlen(str);for (int i = 0; i < n / 2; i++) {char temp = str[i];str[i] = str[n - i - 1];str[n - i - 1] = temp;}
}char* shortestPalindrome(char* s) {int n = strlen(s);if (n == 0) return "";// Create the reversed stringchar* rev_s = (char*)malloc((n + 1) * sizeof(char));strcpy(rev_s, s);reverseString(rev_s);// Find the longest palindromic prefixint i;for (i = n; i >= 0; i--) {if (strncmp(s, rev_s + n - i, i) == 0) {break;}}// Build the shortest palindrome by adding the necessary characters in front of schar* result = (char*)malloc((2 * n - i + 1) * sizeof(char));strcpy(result, rev_s);strncat(result, s + i, n - i);// Free allocated memoryfree(rev_s);return result;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/43958.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/43958.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/43958.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何在JetBrains中寫Codeforce?

目錄 前言 正文 leetcode 個人喜好 參考資料 具體操作步驟 尾聲 &#x1f52d; Hi,I’m Pleasure1234&#x1f331; I’m currently learning Vue.js,SpringBoot,Computer Security and so on.&#x1f46f; I’m studying in University of Nottingham Ningbo China&#x1f4…

Python函數 之 模塊和包

1.模塊 1, 在Python 中, 每個以 .py 結尾的 Python 代碼?件 都可以稱為是?個模塊。 2, 在模塊中 別?書寫好的功能(變量, 函數, 類)&#xff0c;我們可以拿來直接使?。 3, 我們自己寫的代碼文件&#xff0c; 想要作為模塊讓別?使?, 你的代碼?件名(模塊名) 滿足標識符的規…

物流工業三防平板實時跟蹤貨物位置和狀態

在當今全球化和高度數字化的商業環境中&#xff0c;物流行業的高效運作對于企業的成功和經濟的繁榮至關重要。貨物的準確、實時跟蹤不僅能提高物流效率&#xff0c;還能增強客戶滿意度&#xff0c;降低運營成本。物流工業三防平板的出現&#xff0c;為實現貨物位置和狀態的實時…

全網最適合入門的面向對象編程教程:12 類和對象的 Python 實現-Python 使用 logging 模塊輸出程序運行日志

全網最適合入門的面向對象編程教程&#xff1a;12 類和對象的 Python 實現-Python 使用 logging 模塊輸出程序運行日志 摘要&#xff1a; 本文主要介紹了日志的定義和作用&#xff0c;以及 Python 內置日志處理的 logging 模塊&#xff0c;同時簡單說明了日志等級和 logging …

【人工智能】-- 搜索技術(狀態空間法)

個人主頁&#xff1a;歡迎來到 Papicatch的博客 課設專欄 &#xff1a;學生成績管理系統 專業知識專欄&#xff1a; 專業知識 文章目錄 &#x1f349;引言 &#x1f348;介紹 &#x1f349;狀態空間法 &#x1f348;狀態空間的構成 &#x1f34d;狀態 &#x1f34d;算符…

搜維爾科技:觸覺反饋數據手套CyberGlove擊鼓測試

觸覺反饋數據手套CyberGlove擊鼓測試 搜維爾科技&#xff1a;觸覺反饋數據手套CyberGlove擊鼓測試

辦公助手推薦?

辦公助手來啦&#xff01;? 辦公助手來啦&#xff01;?&#x1f31f; 主要亮點&#x1f4dd; 全新PDF編輯器&#x1f3a8; 豐富的幻燈片版式&#x1f30d; 改進的從右至左顯示&#x1f310; 新增本地化選項 &#x1f4ca; 應用場景在線辦公套件&#x1f4f1; 多平臺支持&…

IEC62056標準體系簡介-1.引言

隨著微電子技術和信息技術的發展&#xff0c;電力系統由智能計量儀表、自動化裝置、現代通信設備等組成的各類系統逐步取代過去由感應系計量表計、手動裝置、人工操作等組成的運行模式。為滿足電力市場變革和用戶管理中的抄表&#xff08;含自動&#xff09;、用戶服務、價格表…

torch.autograd.Function自定義前向傳播和反向傳播

torch.autograd.Function 是 PyTorch 提供的一個接口&#xff0c;用于自定義前向傳播和反向傳播的操作。自定義操作需要繼承 torch.autograd.Function 并重載 forward 和 backward 方法。 下面是一個簡單的示例&#xff0c;展示如何自定義一個平方操作的前向傳播和反向傳播。 …

idea創建dynamic web project

由于網課老師用的是eclipse,所以又得自己找教程了…… 解決方案&#xff1a; https://blog.csdn.net/Awt_FuDongLai/article/details/115523552

20240709每日后端--------最優解決Invalid bound statement (not found)

目標 最優解決Invalid bound statement (not found) 步驟 1、打包 2、查看target下是否成雙成對出現 3、核對無誤后&#xff0c;即可解決問題。

軟考高級里《系統架構設計師》容易考嗎?

我還是22年通過的架構考試。系統架構設計師屬于軟考高級科目&#xff0c;難度比初級和中級都要大&#xff0c;往年的通過率也比較低&#xff0c;一般在10-20%左右。從總體來說&#xff0c;這門科目確實是不好過的&#xff0c;大家如果想要備考系統架構設計師的話&#xff0c;還…

Kithara和OpenCV (一)

Kithara使用 OpenCV 目錄 Kithara使用 OpenCV簡介需求和支持的環境構建 OpenCV 庫使用 CMake 進行配置以與 Kithara 一起工作 使用 OpenCV 庫設置項目運行 OpenCV 代碼圖像采集和 OpenCV自動并行化限制和局限性1.系統建議2.實時限制3.不支持的功能和缺失的功能4.顯示 OpenCV 對…

【技術選型】FastDFS、OSS如何選擇

【技術選型】FastDFS、OSS如何選擇 開篇詞&#xff1a;干貨篇&#xff1a;FastDFS&#xff1a;OSS&#xff08;如阿里云OSS&#xff09;&#xff1a; 總結篇&#xff1a;我是杰叔叔&#xff0c;一名滬漂的碼農&#xff0c;下期再會&#xff01; 開篇詞&#xff1a; 文件存儲該選…

簡談設計模式之原型模式

原型模式是一種創建型設計模式, 用于創建對象, 而不必指定它們所屬的具體類. 它通過復制現有對象 (即原型) 來創建新對象. 原型模式適用于當創建新對象的過程代價較高或復雜時, 通過克隆現有對象來提高性能 原型模式結構 原型接口. 聲明一個克隆自身的接口具體原型. 實現克隆…

【鴻蒙學習筆記】屬性學習迭代筆記

這里寫目錄標題 TextImageColumnRow Text Entry Component struct PracExample {build() {Row() {Text(文本描述).fontSize(40)// 字體大小.fontWeight(FontWeight.Bold)// 加粗.fontColor(Color.Blue)// 字體顏色.backgroundColor(Color.Red)// 背景顏色.width(50%)// 組件寬…

展開說說:Android服務之實現AIDL跨應用通信

前面幾篇總結了Service的使用和源碼執行流程&#xff0c;這里再簡單分析一下如果需要Service跨進程通信該怎樣做。AIDL&#xff08;Android Interface Definition Language&#xff09;Android接口定義語言&#xff0c;用于實現 Android 兩個進程之間進行進程間通信&#xff08…

Clickhouse的聯合索引

Clickhouse 有了單獨的鍵索引&#xff0c;為什么還需要有聯合索引呢&#xff1f;了解過mysql的兄弟們應該都知道這個事。 對sql比較熟悉的兄弟們估計看見這個聯合索引心里大概有點數了&#xff0c;不過clickhouse的聯合索引相比mysql的又有些不一樣了&#xff0c;mysql 很遵循最…

深入解析Spring Boot的application.yml配置文件

目錄 引言Spring Boot配置文件簡介 application.yml的優點 基本結構與語法 YAML語法基礎Spring Boot中application.yml的基本結構 常見配置項詳解 服務器配置數據源配置日志配置其他常見配置 環境配置與Profile 多環境配置激活Profile 高級配置與技巧 屬性的占位符替換自定義配…

Spring源碼二十:Bean實例化流程三

上一篇Spring源碼十九&#xff1a;Bean實例化流程二中&#xff0c;我們主要討論了單例Bean創建對象的主要方法getSingleton了解到了他的核心流程無非是&#xff1a;通過一個簡單工廠的getObject方法來實例化bean&#xff0c;當然spring在實例化前后提供了擴展如&#xff1a;bef…