828 pass
This commit is contained in:
parent
3568e8cca6
commit
e1e368ca7a
@ -1,3 +1,4 @@
|
||||
//https://leetcode.com/problems/modify-graph-edge-weights/
|
||||
#include<bits/stdc++.h>
|
||||
using namespace std;
|
||||
class Solution{
|
||||
@ -6,7 +7,9 @@ public:
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
int main(){
|
||||
int n;
|
||||
|
||||
}
|
89
828-231125-pass/main.cpp
Normal file
89
828-231125-pass/main.cpp
Normal file
@ -0,0 +1,89 @@
|
||||
#include<bits/stdc++.h>
|
||||
using namespace std;
|
||||
|
||||
class Solution{
|
||||
public:
|
||||
int uniqueLetterString(string s){
|
||||
const int constraint_length = s.size() + 10;
|
||||
const int ch_nums = 26;
|
||||
const int first_char = (int)'A';
|
||||
|
||||
// store the distance, first is the distance to the previous charactor, second is the distance to the next char
|
||||
pair<int,int> ch_dist[constraint_length];
|
||||
//index store index from 1
|
||||
int index[ch_nums] = {};
|
||||
|
||||
// try to find the distance
|
||||
for(int i = 0 ; i < s.size() ; i++){
|
||||
const int word_th = s[i] - first_char;
|
||||
ch_dist[i + 1].first = i + 1 - index[word_th];
|
||||
if(index[word_th] != 0)
|
||||
ch_dist[index[word_th]].second = i + 1 - index[word_th];
|
||||
index[word_th] = i + 1;
|
||||
}
|
||||
|
||||
for(int i = 0 ; i < ch_nums ; i++){
|
||||
if(index[i]!=0){
|
||||
ch_dist[index[i]].second = s.size() + 1 - index[i];
|
||||
// cout<<i<<' '<<s.size()<<'+'<<1<<'-'<<index[i]<<'='<<s.size() + 1 - index[i]<<endl;
|
||||
}
|
||||
}
|
||||
|
||||
for(int i = 1 ; i < s.size() + 1 ; i++){
|
||||
// cout<< i<<' '<< ch_dist[i].first<< ' '<< ch_dist[i].second<<' '<<index[s[i-1]-'A']<<endl;
|
||||
}
|
||||
|
||||
long long rlt = 0;
|
||||
|
||||
for(int i = 1 ; i < s.size() + 1 ; i++){
|
||||
rlt += ch_dist[i].first + ch_dist[i].second - 1;
|
||||
|
||||
int pre, nxt;
|
||||
|
||||
// if(i == ch_dist[i].first){
|
||||
// pre = i - 1;
|
||||
// }
|
||||
// else{
|
||||
// pre = i - ch_dist[i].first ;
|
||||
// }
|
||||
|
||||
// if(i == index[s[i - 1]-'A'])
|
||||
// nxt = s.size() - i;
|
||||
// else
|
||||
// nxt = ch_dist[i].second ;
|
||||
pre = ch_dist[i].first - 1;
|
||||
nxt = ch_dist[i].second - 1;
|
||||
rlt += pre * nxt;
|
||||
|
||||
// cout<<pre<<' '<<nxt<<endl;
|
||||
|
||||
}
|
||||
return rlt ;
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
int main(){
|
||||
Solution sol;
|
||||
string ex1 = "ABC";
|
||||
cout<<ex1<<endl;
|
||||
cout<<sol.uniqueLetterString(ex1)<<endl;
|
||||
string ex2 = "ABA";
|
||||
cout<<ex2<<endl;
|
||||
cout<<sol.uniqueLetterString(ex2)<<endl;
|
||||
string ex3 = "LEETCODE";
|
||||
cout<<ex3<<endl;
|
||||
cout<<sol.uniqueLetterString(ex3)<<endl;
|
||||
string ex4 = "ABCD";
|
||||
cout<<ex4<<endl;
|
||||
cout<<sol.uniqueLetterString(ex4)<<endl;
|
||||
string ex5 = "ABAC";
|
||||
cout<<ex5<<endl;
|
||||
cout<<sol.uniqueLetterString(ex5)<<endl;
|
||||
string ex6 = "ABACA";
|
||||
cout<<ex6<<endl;
|
||||
cout<<sol.uniqueLetterString(ex6)<<endl;
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user