-
Notifications
You must be signed in to change notification settings - Fork 46
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
1528. Shuffle String #77
Comments
再麻煩大大給予命名上的建議,感激不盡 orz using System.Linq;
public class Solution
{
public class DigitWithIndex
{
public char Digit;
public int Index;
}
public string RestoreString(string inputString, int[] indexMaps)
{
// 把 inputString 和 預期排序陣列資料 (indexMaps) 兩者結合
var inputWithIndexMaps= new DigitWithIndex[inputString.Length];
for (int i = 0; i < inputString.Length; ++i)
{
inputWithIndexMaps[i] = new DigitWithIndex
{
Digit = inputString[i]
,
Index = indexMaps[i]
};
}
// 按照 預期排序陣列資料 重新排序,取出數字做成字串
return new string(
inputWithIndexMaps
.OrderBy(character => character.Index)
.Select(character => character.Digit)
.ToArray());
}
} |
你好 😊 public class DigitWithIndex
{
public char Digit;
public int Index;
} "digit" 在字典上的定義是「數字 (符號)」,在這裡我會稱呼這個 class 為
同理,以下這個 field, public char Digit; 我會稱它為 var inputWithIndexMaps= new DigitWithIndex[inputString.Length]; 這個或許可以叫
這是個很有趣的「是什麼(what)」、「為什麼(why)」的案例。 🤔
都可以參考看看 😊 |
感謝 @twy30 orz 額外好奇,如果: (即照大大的建議
這樣還是好的命名/是可以被接受的 嗎?(雖然編輯器有顏色提示,但容易讓 人/我 混淆?) 因為我沒有實務經驗,真的不知道答案。感謝大大 orz |
如果我們假設讀者讀了 LeetCode 原題、有把這整個解答方法讀完,我主觀覺得那讀者應該能抓到 character, index 這兩個觀念在這個題目下的意義,我會覺得「這種命名是可以接受的」。 🤔
能否說明一下你覺得哪裡混淆? 😊 (是指 |
是的,大大。我期待 變數名稱 與 類別名稱 在命名組成上可以有比較明確的分別。 還是說,這樣的期待不符合實際狀況呢? |
var indexedCharacters = new IndexedCharacter[inputString.Length]; 或許對讀寫 C# 程式比較有經驗的人來說,以上列出的幾點就足夠分辨 變數 與 類別 了 😊 有的時候還可能會有這樣的情形 😅 // 類別「標題」
class Title
{
// ...
}
// 類別「書」
class Book
{
// 一個名叫「標題」的「標題」 property 😅
public Title Title { get; set; }
} |
@twy30 感謝大大 orz,是我經驗不足(不,是完全沒有 😆) |
@LPenny-github 每個人都是從零開始學起的 😊 題外話,我剛正好看到 你的解法 ( #77 (comment) ) 可以改寫成這樣: public class Solution
{
public string RestoreString(string s, int[] indices)
{
var output = s.ToCharArray();
Array.Sort(indices, output);
return new string(output);
}
} |
喔喔喔喔喔, @twy30 感謝大大指導 orz |
https://leetcode.com/problems/shuffle-string/
參考資料
請參考「刷 LeetCode 練習命名」 #69 😊
The text was updated successfully, but these errors were encountered: