https://zyrastory.com/wp-includes/js/jquery/jquery.min.js
https://zyrastory.com/wp-includes/js/jquery/jquery-migrate.min.js
(function(c,l,a,r,i,t,y){
c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};
t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i;
y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);
})(window, document, "clarity", "script", "btkbh92jgl");
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();
for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");ym(93103491, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true
});
(function(c,l,a,r,i,t,y){
c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};t=l.createElement(r);t.async=1;
t.src="https://www.clarity.ms/tag/"+i+"?ref=wordpress";y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);
})(window, document, "clarity", "script", "btkbh92jgl");
跳至主要內容
文章觀看次數: 542
LeetCode題目翻譯 英文原文如下
Given a string s consisting of some words separated by some number of spaces, return the length of the last word in the string.
A word is a maximal substring consisting of non-space characters only.
中文翻譯
給予一個由幾個單字且有幾個空白組成的字串 s ,回傳最後一個單字的長度
一個單字的定義是其中只有不含空白之字元
s的長度會介於1到104 之間
s 只會包含英文字元跟空白字元
s 至少會包含一個單字 ➔ 不用考慮s整個為空字串的情況
接著來看看以下的範例
先看範例1
各位應該一眼就能看到最熟悉的兩個單字吧,分別是「Hello」跟「World」這兩個單字吧
故回傳最後的單字「World」的長度 ➔ 5
再來看看範例2
最後一個單字是moon(後面的也是空白故不算)
故回傳最後的單字「moon」的長度 ➔ 4
解題思路C# 解決方案 方案1 – 簡單的遞迴
public class Solution {
public int LengthOfLastWord(string s) {
int cnt = 0;
for(int i = s.Length-1;i>=0;i--)
{
if(Char.IsWhiteSpace(s[i]))
{
if(cnt>0)
{
return cnt;
}
continue;
}
cnt+=1;
}
return cnt;
}
}
最直覺的方式,因為要找最後一個單字的長度,所以從string的最後往前找
方案2 – String 底下的 Split
public class Solution {
public int LengthOfLastWord(string s) {
string[] tmp = s.Split(' '); //使用Split對字串做空白切割
string tmpStr;
for(int i = tmp.Length-1; i>=0; i--) //因為要最後的單字,故從陣列最後一位開始找
{
tmpStr = tmp[i];
if(!String.IsNullOrEmpty(tmpStr)) //不是空的話
{
return tmpStr.Length;
}
}
return 0; //應該不會跑到,題目有保證至少有一個單字
}
}
大家可以看到上面的第三個註解那裡的程式 (空白那個),其實最早寫的時候是沒有的
但實際跑過之後發現,要是最後單字後面有一個或以上的空白,就會導致Array的最後出現空白字元
故還需加上判斷是否為Null或空白(String.IsNullOrEmpty)
方案2.1
已經知道單純的Split有空白的問題,那能不能找到其他辦法解決呢?
當然有! 大家看看上面那一句「最後單字後面有一個或以上的空白」
那我們對症下藥,就先對單字做個預先的處理
這時候我們就會找到內建的String. Trim( ) 這個方法,其中又分為以下3種
Trim( ) TrimEnd( ) TrimStart( ) Trim這個字在英文的意思就是 「修剪」
故方法即為針對字串進行特定字元(若無設定即對象為空白)的修剪
TrimStart 就是對字串的開頭 、TrimEnd 則是對字串的結尾 、Trim則是兩者都做
那現在把它實際運用在剛剛的程式碼中
public class Solution {
public int LengthOfLastWord(string s) {
s = s.TrimEnd(); //Trim也可以,因為這裡只要對結尾做處理即可
string[] tmp = s.Split(' ');
return tmp[tmp.Length-1].Length;
}
}
是不是比剛剛簡單了許多,連迴圈都不用了
而一切就都只是多了一個小小的前置動作而已
方案2.2
什麼! 這樣你們也不滿意!! 不想對字串先處理??? (比案子遇上的客戶還麻煩餒…)
這時候我們要來看下官方對於Split的文件 了
疑?
Split 後面有一個 StringSplitOptions 參數可以帶入的
而其中的「RemoveEmptyEntries」 可以直接省略結果包含空字串的陣列元素
這..這不就我們要的嗎!
事不宜遲,趕緊來改看看
public class Solution {
public int LengthOfLastWord(string s) {
string[] tmp = s.Split(' ',StringSplitOptions.RemoveEmptyEntries);
return tmp[tmp.Length-1].Length;
}
}
Java解 決方案方案1
class Solution {
public int lengthOfLastWord(String s) {
int cnt = 0;
for(int i = s.length()-1;i>=0;i--)
{
if(s.charAt(i)==' ')
{
if(cnt>0)
{
return cnt;
}
continue;
}
cnt+=1;
}
return cnt;
}
}
方案2
class Solution {
public int lengthOfLastWord(String s) {
s = s.trim();
String[] arr = s.split("\\s+");
return arr[arr.length-1].length();
}
}
Python3 解決方案方案1
class Solution:
def lengthOfLastWord(self, s: str) -> int:
cnt = 0;
for i in range(len(s)-1,-1,-1):
if(s[i]== ' '):
if cnt>0 :
return cnt
continue
cnt+=1;
return cnt
⭐方案2
class Solution:
def lengthOfLastWord(self, s: str) -> int:
s = s.rstrip() #or strip
return len(s.split()[-1])
JavaScript 解決方案方案1
/**
* @param {string} s
* @return {number}
*/
var lengthOfLastWord = function(s) {
var cnt = 0;
for(var i = s.length-1;i>=0;i--)
{
if(s[i]==' ')
{
if(cnt>0)
{
return cnt;
}
continue;
}
cnt+=1;
}
return cnt;
};
方案2
/**
* @param {string} s
* @return {number}
*/
var lengthOfLastWord = function(s) {
s = s.trim();
var arr = s.split(' ');
return arr[arr.length-1].length;
};
結論 看完這題各種不同的解法,大家可以看到善用內建的方法會有多少程式碼的差異
而這就是程式之所以讓人著迷的魅力啊
"Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live"
題目連結 : Length of Last Word – LeetCode
🧡如果這篇文章有幫上你的一點點忙,那是我的榮幸
🧡可以的話,幫我的FaceBook 粉絲專頁按個讚,我會很感謝的
✅如有任何疑問,歡迎透過留言或messenger讓我知道 !
最新文章
function closePop(){document.getElementById("headlineatas").style.display = 'none';}
function openPop()
{
if(/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent))
{
return false;
}
var r = Math.random();
if(r>0.7 || r<0.3)
{
document.getElementById("headlineatas").style.display = '';
}
}
(function (d, sc, u) {
var s = d.createElement(sc),
p = d.getElementsByTagName(sc)[0];
s.type = "text/javascript";
s.async = true;
s.src = u;
p.parentNode.insertBefore(s, p);
})(
document,
"script",
"https://affiliate.klook.com/widget/fetch-iframe-init.js"
);
(adsbygoogle = window.adsbygoogle || []).push({});
(function (d, sc, u) {
var s = d.createElement(sc),
p = d.getElementsByTagName(sc)[0];
s.type = "text/javascript";
s.async = true;
s.src = u;
p.parentNode.insertBefore(s, p);
})(
document,
"script",
"https://affiliate.klook.com/widget/fetch-iframe-init.js"
);
(adsbygoogle = window.adsbygoogle || []).push({});
(adsbygoogle = window.adsbygoogle || []).push({});
(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
js = d.createElement(s); js.id = id;
js.src = 'https://connect.facebook.net/en_US/sdk/xfbml.customerchat.js#xfbml=1&version=v6.0&autoLogAppEvents=1'
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
function returnDefault(item)
{
item.innerText = "Copy"
item.style.color = "white"
item.style.backgroundColor = "CornflowerBlue";
}
if(/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent) == false) //20221128 手機用戶移除copy功能
{
jQuery('code').each(function () {
var btn = document.createElement("button");
btn.innerHTML = "Copy";
btn.onmousedown = "event.preventDefault();";
btn.setAttribute('class', 'btnC');
btn.onclick = function(){
var k = this.nextSibling;
var textArea = document.createElement("textarea");
textArea.style.position = 'fixed';
textArea.style.top = 0;
textArea.style.left = 0;
textArea.style.width = '2em';
textArea.style.height = '2em';// We don't need padding, reducing the size if it does flash render.
textArea.style.padding = 0;// Clean up any borders.
textArea.style.border = 'none';
textArea.style.outline = 'none';
textArea.style.boxShadow = 'none';// Avoid flash of the white box if rendered for any reason.
textArea.style.background = 'transparent';textArea.value = k.textContent;document.body.appendChild(textArea);
textArea.focus();
textArea.select();var successful = document.execCommand('copy');
var msg = successful ? 'successful' : 'unsuccessful';if(successful)
{
this.focus();
this.style.backgroundColor = "green";
this.innerText = "✔Copied"
//openPop();
setTimeout(( ()=>returnDefault(this)),1850)
}document.body.removeChild(textArea);
};var parent = this.parentNode;
parent.insertBefore(btn, this);
});
}
var eztoc_smooth_local = {"scroll_offset":"0","add_request_uri":""};
https://zyrastory.com/wp-content/plugins/easy-table-of-contents/assets/js/smooth_scroll.min.js
https://zyrastory.com/wp-content/plugins/easy-table-of-contents/vendor/js-cookie/js.cookie.min.js
https://zyrastory.com/wp-content/plugins/easy-table-of-contents/vendor/sticky-kit/jquery.sticky-kit.min.js
var ezTOC = {"smooth_scroll":"1","visibility_hide_by_default":"","scroll_offset":"0","fallbackIcon":"<span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span>","chamomile_theme_is_on":""};
https://zyrastory.com/wp-content/plugins/easy-table-of-contents/assets/js/front.min.js
https://zyrastory.com/wp-content/plugins/highlighting-code-block/assets/js/prism.js
var hcbVars = {"showCopyBtn":"","copyBtnLabel":"Copy code to clipboard"};
https://zyrastory.com/wp-content/plugins/highlighting-code-block/build/js/hcb_script.js
var ct_localizations = {"ajax_url":"https:\/\/zyrastory.com\/wp-admin\/admin-ajax.php","public_url":"https:\/\/zyrastory.com\/wp-content\/themes\/blocksy\/static\/bundle\/","rest_url":"https:\/\/zyrastory.com\/wp-json\/","search_url":"https:\/\/zyrastory.com\/search\/QUERY_STRING\/","show_more_text":"\u986f\u793a\u66f4\u591a","more_text":"\u66f4\u591a","search_live_results":"\u641c\u5c0b\u7d50\u679c","search_live_no_result":"\u627e\u4e0d\u5230\u7b26\u5408\u7684","search_live_one_result":"\u60a8\u5df1\u627e\u5230 %s \u500b\u7b26\u5408\u7684. \u8acb\u6309 Tab \u9375\u4f86\u9078\u64c7\u5b83.","search_live_many_results":"\u60a8\u5df1\u627e\u5230 %s \u500b\u7b26\u5408\u7684. \u8acb\u6309 Tab \u9375\u4f86\u9078\u64c7\u5b83.","expand_submenu":"\u5c55\u958b\u4e0b\u62c9\u9078\u55ae","collapse_submenu":"\u6536\u5408\u4e0b\u62c9\u9078\u55ae","dynamic_js_chunks":[],"dynamic_styles":{"lazy_load":"https:\/\/zyrastory.com\/wp-content\/themes\/blocksy\/static\/bundle\/non-critical-styles.min.css?ver=2.0.45","search_lazy":"https:\/\/zyrastory.com\/wp-content\/themes\/blocksy\/static\/bundle\/non-critical-search-styles.min.css?ver=2.0.45","back_to_top":"https:\/\/zyrastory.com\/wp-content\/themes\/blocksy\/static\/bundle\/back-to-top.min.css?ver=2.0.45"},"dynamic_styles_selectors":[{"selector":".ct-header-cart, #woo-cart-panel","url":"https:\/\/zyrastory.com\/wp-content\/themes\/blocksy\/static\/bundle\/cart-header-element-lazy.min.css?ver=2.0.45"},{"selector":".flexy","url":"https:\/\/zyrastory.com\/wp-content\/themes\/blocksy\/static\/bundle\/flexy.min.css?ver=2.0.45"}],"lang":"zh"};
https://zyrastory.com/wp-content/themes/blocksy/static/bundle/main.js
https://zyrastory.com/wp-includes/js/comment-reply.min.js
(function() {
var expirationDate = new Date();
expirationDate.setTime( expirationDate.getTime() + 31536000 * 1000 );
document.cookie = "pll_language=zh; expires=" + expirationDate.toUTCString() + "; path=/; secure; SameSite=Lax";
}());
window.addEventListener("DOMContentLoaded",(e=>{document.querySelectorAll('img[loading="lazy"]').forEach((e=>{e.getBoundingClientRect().top<=window.innerHeight&&(e.loading="eager")}))}));
ai_front = {"insertion_before":"BEFORE","insertion_after":"AFTER","insertion_prepend":"PREPEND CONTENT","insertion_append":"APPEND CONTENT","insertion_replace_content":"REPLACE CONTENT","insertion_replace_element":"REPLACE ELEMENT","visible":"VISIBLE","hidden":"HIDDEN","fallback":"FALLBACK","automatically_placed":"Automatically placed by AdSense Auto ads code","cancel":"Cancel","use":"Use","add":"Add","parent":"Parent","cancel_element_selection":"Cancel element selection","select_parent_element":"Select parent element","css_selector":"CSS selector","use_current_selector":"Use current selector","element":"ELEMENT","path":"PATH","selector":"SELECTOR"};