<style>
html, body, .ui-content {
background: #222222;
color: #00BFFF;
}
/* 設定 code 模板 */
.markdown-body code,
.markdown-body tt {
background-color: #ffffff36;
}
.markdown-body .highlight pre,
.markdown-body pre {
color: #ddd;
background-color: #00000036;
}
.hljs-tag {
color: #ddd;
}
.token.operator {
background-color: transparent;
}
/* 設定連結 */
a,
.open-files-container li.selected a {
color: #89FFF8;
}
a:hover,
.open-files-container li.selected a:hover {
color: #89FFF890;
}
</style>
###### tags: `Leetcode`
# 1071. Greatest Common Divisor of Strings
###### Link : https://leetcode.com/problems/greatest-common-divisor-of-strings/description/
## 題目
回傳GCD of Strings
**GCD of Strings:
t divides s" if and only if s = t + ... + t**
## 程式碼
```cpp=
class Solution {
public:
string gcdOfStrings(string str1, string str2) {
string ans, temp;
const int size1 = str1.size(), size2 = str2.size();
for(int i = 0;i < size2;i++){
temp += str2[i];
if(isDivisor(str1, temp) && isDivisor(str2, temp) && temp.size() > ans.size())
ans = temp;
}
return ans;
}
bool isDivisor(string &str, string &sub){
const int strSize = str.size(), subSize = sub.size();
if(strSize % subSize != 0) return false;
int i =0, j = 0;
while(i < strSize){
if(str[i] != sub[j]) return false;
++i, ++j;
if(j >= subSize) j = 0;
}
return true;
}
};
```
## Date
### 2023/2/1