LeetCode 816. 模糊坐标
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 816. 模糊坐标
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 題目
我們有一些二維坐標,如 “(1, 3)” 或 “(2, 0.5)”,然后我們移除所有逗號,小數點和空格,得到一個字符串S。返回所有可能的原始字符串到一個列表中。
原始的坐標表示法不會存在多余的零,所以不會出現類似于"00", "0.0", "0.00", "1.0", "001", "00.01"或一些其他更小的數來表示坐標。此外,一個小數點前至少存在一個數,所以也不會出現“.1”形式的數字。
最后返回的列表可以是任意順序的。而且注意返回的兩個數字中間(逗號之后)都有一個空格。
示例 1: 輸入: "(123)" 輸出: ["(1, 23)", "(12, 3)", "(1.2, 3)", "(1, 2.3)"]示例 2: 輸入: "(00011)" 輸出: ["(0.001, 1)", "(0, 0.011)"] 解釋: 0.0, 00, 0001 或 00.01 是不被允許的。示例 3: 輸入: "(0123)" 輸出: ["(0, 123)", "(0, 12.3)", "(0, 1.23)", "(0.1, 23)", "(0.1, 2.3)", "(0.12, 3)"]示例 4: 輸入: "(100)" 輸出: [(10, 0)] 解釋: 1.0 是不被允許的。提示: 4 <= S.length <= 12. S[0] = "(", S[S.length - 1] = ")", 且字符串 S 中的其他元素都是數字。來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/ambiguous-coordinates
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 暴力解題
class Solution { public:vector<string> ambiguousCoordinates(string S) {S = S.substr(1,S.size()-2);//去除括號string a, b;int i, j, k, na, nb, n = S.size();vector<string> ans;for(i = 1; i < n; ++i){a = S.substr(0,i);//拆分為a,b兩個字符串b = S.substr(i);na = a.size();nb = b.size();for(j = 0; j < na; ++j){if(j != 0)//j==0的時候不插入 . 小數點a.insert(j,1,'.');for(k = 0; k < nb; ++k){if(k != 0)b.insert(k,1,'.');//k==0的時候不插入 . 小數點if(isok(a) && isok(b))ans.push_back("("+a+", "+b+")");if(k != 0)b.erase(k,1);}if(j != 0)a.erase(j,1);}}return ans;}bool isok(const string& s){bool hasdot = false;for(auto& ch : s)if(ch == '.')hasdot = true;if(hasdot && (s.back()=='0' || (s[0]=='0'&&s[1] != '.')))return false;else if(!hasdot && s.size()>1 && s[0] == '0')return false;return true;} };總結
以上是生活随笔為你收集整理的LeetCode 816. 模糊坐标的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 1261. 在受污染的
- 下一篇: LeetCode 1339. 分裂二叉树