SQL-leetcode—3374. 首字母大寫 II

3374. 首字母大寫 II

表:user_content

±------------±--------+
| Column Name | Type |
±------------±--------+
| content_id | int |
| content_text| varchar |
±------------±--------+
content_id 是這張表的唯一主鍵。
每一行包含一個不同的 ID 以及對應的文本內容。
編寫一個解決方案來根據下面的規則來轉換 content_text 列中的文本:

將每個單詞的 第一個字母 轉換為 大寫,其余字母 保持小寫。
特殊處理包含特殊字符的單詞:
對于用短橫 - 連接的詞語,兩個部份 都應該 大寫(例如,top-rated → Top-Rated)
所有其他 格式 和 空格 應保持 不變
返回結果表同時包含原始的 content_text 以及根據上述規則修改后的文本。

結果格式如下例所示。

示例:

輸入:

user_content 表:

±-----------±--------------------------------+
| content_id | content_text |
±-----------±--------------------------------+
| 1 | hello world of SQL |
| 2 | the QUICK-brown fox |
| 3 | modern-day DATA science |
| 4 | web-based FRONT-end development |
±-----------±--------------------------------+
輸出:

±-----------±--------------------------------±--------------------------------+
| content_id | original_text | converted_text |
±-----------±--------------------------------±--------------------------------+
| 1 | hello world of SQL | Hello World Of Sql |
| 2 | the QUICK-brown fox | The Quick-Brown Fox |
| 3 | modern-day DATA science | Modern-Day Data Science |
| 4 | web-based FRONT-end development | Web-Based Front-End Development |
±-----------±--------------------------------±--------------------------------+
解釋:

對于 content_id = 1:
每個單詞的首字母都是大寫的:“Hello World Of Sql”
對于 content_id = 2:
包含的連字符詞 “QUICK-brown” 變為 “Quick-Brown”
其它單詞遵循普通的首字母大寫規則
對于 content_id = 3:
連字符詞 “modern-day” 變為 “Modern-Day”
“DATA” 轉換為 “Data”
對于 content_id = 4:
包含兩個連字符詞:“web-based” → “Web-Based”
以及 “FRONT-end” → “Front-End”

題解

  1. 要考慮怎么把首字母切分出來,然后連接
    substring,concat,lower、upper,然后就慢慢轉化唄
  2. 技術上不好處理,可以把問題前置,比如用代碼處理,不用sql

方法一

-- 文本處理函數集合:將文本轉換為首字母大寫格式(支持含短橫線的單詞)
SELECT
content_id,
content_text AS original_text,
(-- 主查詢:處理每個單詞并重新連接成文本SELECT GROUP_CONCAT(CASE-- 處理含短橫線的復合詞(如 "quick-brown" → "Quick-Brown")WHEN INSTR(word, '-') > 0 THENCONCAT(UPPER(LEFT(SUBSTRING_INDEX(word, '-', 1), 1)), -- 第一部分首字母大寫LOWER(SUBSTRING(SUBSTRING_INDEX(word, '-', 1), 2)), -- 其余小寫'-', -- 保留短橫線UPPER(LEFT(SUBSTRING_INDEX(word, '-', -1), 1)), -- 第二部分首字母大寫LOWER(SUBSTRING(SUBSTRING_INDEX(word, '-', -1), 2)) -- 其余小寫)-- 處理普通單詞(如 "the" → "The")ELSECONCAT(UPPER(LEFT(word, 1)), LOWER(SUBSTRING(word, 2)))ENDSEPARATOR ' ') -- 用空格連接處理后的單詞FROM (-- 子查詢:將文本按空格拆分為單詞(最多支持6個單詞,可擴展)SELECT TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(LOWER(content_text), ' ', n), ' ', -1)) AS wordFROM (SELECT content_text FROM user_content WHERE content_id = t.content_id) AS cJOIN (SELECT 1 n UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALLSELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 -- 擴展此范圍以支持更多單詞) AS numsON CHAR_LENGTH(LOWER(content_text)) - CHAR_LENGTH(REPLACE(LOWER(content_text), ' ', '')) >= nums.n - 1) AS words
) AS converted_text
FROM user_content t;

方法二

WITH RECURSIVE cte_split AS (-- 初始分割文本,將每個單詞逐一提取SELECTcontent_id,@x := content_text AS original_text,@dash := LOCATE('-', @x) AS first_dash,@space := LOCATE(' ', @x) AS fist_space,@sec := CASEWHEN @dash <> '0' AND @space <> '0' THENLEAST(CAST(@space AS UNSIGNED), CAST(@dash AS UNSIGNED))WHEN @dash = '0' AND @space = '0' THENLENGTH(@x)ELSEGREATEST(CAST(@space AS UNSIGNED), CAST(@dash AS UNSIGNED))END AS separate_loc,LEFT(@x, CAST(@sec AS UNSIGNED)) AS word,SUBSTRING(@x, CAST(@sec AS UNSIGNED) + 1) AS remaining_text,0 AS word_order -- 跟蹤單詞的順序FROM user_contentUNION ALL-- 遞歸分割剩余文本中的單詞SELECTcontent_id,original_text,@dash := LOCATE('-', remaining_text) AS first_dash,@space := LOCATE(' ', remaining_text) AS fist_space,@sec := CASEWHEN @dash <> '0' AND @space <> '0' THENLEAST(CAST(@space AS UNSIGNED), CAST(@dash AS UNSIGNED))WHEN @dash = '0' AND @space = '0' THENLENGTH(remaining_text)ELSEGREATEST(CAST(@space AS UNSIGNED), CAST(@dash AS UNSIGNED))END AS separate_loc,LEFT(remaining_text, CAST(@sec AS UNSIGNED)) AS word,SUBSTRING(remaining_text, CAST(@sec AS UNSIGNED) + 1) AS remaining_text,word_order + 1 -- 跟蹤單詞的順序FROM cte_splitWHERE remaining_text <> ''
),
cte_transformed AS (SELECTcontent_id,original_text,word_order,CONCAT(UPPER(SUBSTRING(word, 1, 1)),LOWER(SUBSTRING(word, 2)))AS transformed_wordFROM cte_split
),
cte_reconstructed AS (-- 重建文本,將轉換后的單詞重新組合SELECTcontent_id,original_text,GROUP_CONCAT(transformed_word ORDER BY word_order SEPARATOR '') AS converted_textFROM cte_transformedGROUP BY content_id
)
SELECTcontent_id,original_text,converted_text
FROM cte_reconstructed;

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

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

相關文章

告別籠統的 200 OK:一份給 API 設計者的 HTTP 狀態碼終極指南

文章目錄寫在前面問題描述核心結論與建議簡要描述詳細闡述1xx - 信息性響應 (Informational)2xx - 成功 (Successful)3xx - 重定向 (Redirection)4xx - 客戶端錯誤 (Client Error)5xx - 服務器錯誤 (Server Error)HTTP 狀態碼速查表參考以及更多更詳細的狀態碼查詢寫在前面 你…

從防抖節流到鏈表樹:編程世界中的抽象優化藝術

從防抖節流到鏈表樹&#xff1a;編程世界中的抽象優化藝術 在編程的知識體系中&#xff0c;有些概念看似毫不相關&#xff0c;卻在底層邏輯上有著驚人的相似之處。防抖與節流、鏈表與樹&#xff0c;這兩組分屬不同領域的概念&#xff0c;正是這種思維共性的典型代表。它們不僅展…

第三階段數據-3:數據庫腳本生成,備份與還原,分離與附加

1_生成數據庫腳本&#xff08;1&#xff09;在數據庫上右鍵選擇任務&#xff08;2&#xff09;選擇生成腳本&#xff08;3&#xff09;選擇下一步&#xff0c;如果下次不想顯示此頁面&#xff0c;可勾選不再顯示此頁&#xff08;4&#xff09;如果導出全部數據&#xff0c;選擇…

React框架超詳細入門到實戰項目演練【前端】【React】

React框架 1.前端展示解釋 當客戶端訪問服務器時&#xff0c;會從服務器中下載很多靜態文件到本地&#xff0c;比如css、js等前端渲染文件 下載完成之后瀏覽器會將這些文件組合形成前端頁面渲染出來。 2.React概述 React是一個專注于構建用戶界面的JavaScript庫&#xff0c;…

本地部署的終極多面手:Qwen2.5-Omni-3B,視頻剪、音頻混、圖像生、文本寫全搞定

Qwen2.5-Omni-3B是什么&#xff1f; Qwen2.5-Omni-3B 是由阿里巴巴 Qwen 團隊推出的一款輕量級多模態大模型&#xff0c;作為 Qwen2.5-Omni-7B 的高效優化版本&#xff0c;專為消費級硬件環境量身打造。該模型具備處理文本、音頻、圖像和視頻等多種模態輸入的能力&#xff0c;…

連續空間強化學習:策略輸出的兩種形態 —— 概率分布與確定性動作

在強化學習的世界里&#xff0c;智能體與環境的交互核心是 “動作選擇”。當面對離散動作空間&#xff08;如圍棋的落子點、游戲的按鍵操作&#xff09;時&#xff0c;智能體可以直接枚舉或概率選擇有限的動作&#xff1b;但在連續動作空間中&#xff08;如機器人關節角度、無人…

IT運維背鍋權限泄露?集中式管控如何化解風險?

在企業數字化轉型的浪潮中&#xff0c;IT運維團隊常常被推到風口浪尖。員工離職后權限未及時回收、賬號共享導致數據泄露、跨系統權限配置不一致……這些問題一旦暴露&#xff0c;IT運維往往成為“背鍋俠”。權限泄露不僅威脅企業數據安全&#xff0c;還可能導致合規性風險&…

2025 世界機器人大會啟示錄:機構學 × AI × 視頻鏈路的融合之路

引言 2025 年 8 月 8 日&#xff0c;北京再一次成為全球矚目的科技焦點——世界機器人大會盛大開幕。來自全球的 200 余家頂尖企業齊聚一堂&#xff0c;帶來超過 1500 件展品&#xff0c;其中首發新品突破 100 款&#xff0c;涵蓋了從工業制造、醫療康復到服務陪伴、特種作業的…

從零開始部署經典開源項目管理系統最新版redmine6-Linux Debian12

安裝Debian 12 前面為了在windows上好開發&#xff0c;想要在windows上配置開發環境&#xff0c;以源碼方式在本地部署運行&#xff0c;但經過好幾天各種版本切換及配置組件庫等各種操作后&#xff0c;證明windows上搭建redmine6支持的運行環境沒有那么簡單&#xff0c;后續有…

超長視頻生成新突破!LongVie框架問世,創作不再受時長限制

超長視頻生成新突破&#xff01;LongVie框架問世&#xff0c;創作不再受時長限制 文章來源&#xff1a;Poixe AI 在AI技術飛速發展的當下&#xff0c;視頻生成領域取得了令人矚目的進步&#xff0c;尤其是在短視頻創作方面。然而&#xff0c;當視頻時長超過一分鐘時&#xff…

MongoDB 查詢方法與高級查詢表(Python版)

目錄 一、MongoDB3步快速安裝 1.1?下載安裝包 1.2運行安裝程序? 1.3?驗證安裝?打開CMD執行&#xff1a; 1.4 基本查詢操作 二、高級查詢操作符表 2.1 比較操作符 2.2 邏輯操作符 2.3 元素操作符 2.4 數組操作符 三、高級查詢案例 3.1 復雜條件組合 3.2 數組查…

選型指南:如何為企業挑選合適的邊緣計算網關

選型指南&#xff1a;如何為企業挑選合適的邊緣計算網關在企業邁向智能化轉型的道路上&#xff0c;選擇一款合適的物聯網邊緣計算網關至關重要。面對眾多型號和功能各異的網關產品&#xff0c;企業該如何做出正確抉擇呢&#xff1f;?首先要考慮的是網關的兼容性。藍蜂物聯網邊…

HT8693 音頻功率放大器:賦能優質音頻體驗的核心之選

在音頻設備快速迭代的當下&#xff0c;用戶對音質表現、設備穩定性和場景適應性的需求日益提升&#xff0c;一款性能卓越的音頻功率放大器成為連接音源與聽覺享受的關鍵橋梁。HT8693 憑借雙模式切換、強勁輸出、智能保護等核心優勢&#xff0c;為各類音頻設備提供了可靠的性能支…

python+flask后端開發~項目實戰 | 博客問答項目--模塊化文件架構的基礎搭建

項目功能概述&#xff1a; 首頁(公開博客顯示)博客發布與查詢用戶登錄與注冊底層MySQL數據庫的動態響應與支持 簡介&#xff1a;Flask作為Python的一個輕量級Web框架&#xff0c;以其靈活性和可擴展性&#xff0c;贏得了眾多開發者的青睞。從本文開始&#xff0c;你將從0開始…

精品方案 | GCKontrol與OMNeT++聯合仿真在機載網絡性能分析中的應用

概述本文基于GCKontrol搭建了飛行仿真模型&#xff0c;并基于OMNeT搭建了機內網絡系統&#xff0c;實現了不同專業、不同平臺的模型集成與調試。通過這種聯合仿真架構&#xff0c;能夠模擬飛機在不同飛行狀態下的網絡性能&#xff0c;極大提高了性能評估的精度和可靠性。這不僅…

階躍星辰 StepFun 入駐 GitCode 平臺,帶來工業級 AI 體驗

在 2025 年的 AI 產業應用實踐中&#xff0c;開發者面臨三重核心挑戰&#xff1a;???上下文窗口局限?&#xff1a;主流 AI 模型普遍受限于 4K-32K 的上下文長度&#xff0c;導致技術方案文檔需被強制拆分處理&#xff0c;破壞架構設計的連貫性。 ???跨行業文檔識別缺陷?…

亞馬遜新品爆單策略:從傳統困境到智能突破

新品上架&#xff0c;是每個亞馬遜賣家最期待又最煎熬的階段。我至今記得一款新品上線后的第一周&#xff1a;每天看著廣告費像流水一樣燒掉&#xff0c;單量卻遲遲不見起色。后臺的ACOS一路飆升&#xff0c;幾天時間&#xff0c;我的預算已經消耗了一大半。那種“錢花了&#…

第7章 React性能優化核心

性能優化是React開發中的重要主題,直接影響用戶體驗和應用成功。本章將深入探討React性能優化的核心技術和最佳實踐,從組件記憶化到Bundle優化,幫你掌握構建高性能React應用的關鍵技能。 通過本章學習,你將掌握如何識別性能瓶頸、選擇合適的優化策略,以及在實際項目中應用…

docker CI操作演示分享(第四期)

引言java項目&#xff1a;1、將項目通過maven進行編譯打包2、將文件上傳到指定的服務器中3、將war包放到tomcat的目錄中4、通過Dockerfile將tomcat和war包轉成一個鏡像&#xff0c;由docker-compose去運行容器項目更新后&#xff1a;將上述流程再次的從頭到尾的執行一次go項目&…

Kubernetes 的 YAML 配置文件-kind

Kubernetes的YAML配置文件–kind 在 Kubernetes 的 YAML 配置文件中,kind: 字段用于指定你要創建的資源對象類型。Kubernetes 支持多種資源類型,它們可以分為以下幾大類: 一、核心資源類型(常用) 1. Pod 描述:最小的部署單元,包含一個或多個容器。 特點:臨時性(Pod …