Looking for answer in C++ ---------------------------- Program 1: #include <iost
ID: 3682315 • Letter: L
Question
Looking for answer in C++
----------------------------
Program 1:
#include <iostream>
#include <string>
using namespace std;
bool checkUnique(string);
int main() {
string input;
bool unique;
cout << "Please enter a string: ";
cin >> input;
unique = checkUnique(input);
if (unique) {
cout << "Unique string!" << endl;
}
else cout << "Not unique!" << endl;
getchar();
getchar();
return 0;
}
bool checkUnique(string input) {
int unique = 0;
int i = 0;
while (input[i] != '') {
int position = (int)input[i] - 'a';
if ((unique & (1 << position)) >0)
return false;
unique |= (1 << position);
i++;
}
return true;
}
--------------------------------
Program 2:
#include <iostream>
#include <string>
using namespace std;
bool checkUnique(string);
int main() {
string input;
bool unique;
cout << "Please enter a string: ";
cin >> input;
unique = checkUnique(input);
if (unique) {
cout << "Unique string!" << endl;
}
else cout << "Not unique!" << endl;
getchar();
getchar();
return 0;
}
bool checkUnique(string input) {
bool unique[256] = { false };
int i = 0;
while (unique[i] != '') {
if (unique[(int)input[i]])
return false;
else {
unique[(int)input[i]] = true;
i++;
}
}
}
Explanation / Answer
Hi I have done coding. Please test it.
#include <iostream>
#include <string>
#include <time.h>
using namespace std;
bool checkUniqueMethod1(string);
bool checkUniqueMethod2(string);
int main() {
string input;
bool unique;
clock_t start;
clock_t end;
double firstMethodTime[9]= {0};
double seconMethodTime[9] = {0};
int i=0;
// for string of size 5
input = "abcde";
start = clock();
unique = checkUniqueMethod1(input);
end = clock();
firstMethodTime[i] = (double)(end-start);
start = clock();
unique = checkUniqueMethod2(input);
end = clock();
seconMethodTime[i] = (double)(end-start);
i++;
// for input of length 10;
string input1 = "abcdefghij";
start = clock();
unique = checkUniqueMethod1(input1);
end = clock();
firstMethodTime[i] = (double)(end-start);
start = clock();
unique = checkUniqueMethod2(input1);
end = clock();
seconMethodTime[i] = (double)(end-start);
i++;
// for input of length 20
input="abcdefghijklmnopqrst";
start = clock();
unique = checkUniqueMethod1(input);
end = clock();
firstMethodTime[i] = (double)(end-start);
start = clock();
unique = checkUniqueMethod2(input);
end = clock();
seconMethodTime[i] = (double)(end-start);
i++;
// for input of lenght 50
unique = "";
char c = '1';
for( int i=1; i<=50; i++){
input = input + c;
c++;
}
start = clock();
unique = checkUniqueMethod1(input);
end = clock();
firstMethodTime[i] = (double)(end-start);
start = clock();
unique = checkUniqueMethod2(input);
end = clock();
seconMethodTime[i] = (double)(end-start);
i++;
// for input of lenght 80
unique = "";
c = '1';
for( int i=1; i<=80; i++){
input = input + c;
c++;
}
start = clock();
unique = checkUniqueMethod1(input);
end = clock();
firstMethodTime[i] = (double)(end-start);
start = clock();
unique = checkUniqueMethod2(input);
end = clock();
seconMethodTime[i] = (double)(end-start);
i++;
// for input of lenght 100
unique = "";
c = '1';
for( int i=1; i<=100; i++){
input = input + c;
c++;
}
start = clock();
unique = checkUniqueMethod1(input);
end = clock();
firstMethodTime[i] = (double)(end-start);
start = clock();
unique = checkUniqueMethod2(input);
end = clock();
seconMethodTime[i] = (double)(end-start);
i++;
// for input of lenght 150
unique = "";
c = '1';
for( int i=1; i<=150; i++){
input = input + c;
c++;
}
start = clock();
unique = checkUniqueMethod1(input);
end = clock();
firstMethodTime[i] = (double)(end-start);
start = clock();
unique = checkUniqueMethod2(input);
end = clock();
seconMethodTime[i] = (double)(end-start);
i++;
// for input of lenght 200
unique = "";
c = '1';
for( int i=1; i<=200; i++){
input = input + c;
c++;
}
start = clock();
unique = checkUniqueMethod1(input);
end = clock();
firstMethodTime[i] = (double)(end-start);
start = clock();
unique = checkUniqueMethod2(input);
end = clock();
seconMethodTime[i] = (double)(end-start);
i++;
// for input of lenght 256
unique = "";
c = '1';
for( int i=1; i<=256; i++){
input = input + c;
c++;
}
start = clock();
unique = checkUniqueMethod1(input);
end = clock();
firstMethodTime[i] = (double)(end-start);
start = clock();
unique = checkUniqueMethod2(input);
end = clock();
seconMethodTime[i] = (double)(end-start);
i++;
// printing time taken by both methods
i=0;
cout<<"n program1 profram2"<<endl;
cout<<"5 "<<firstMethodTime[i]<<" "<<seconMethodTime[i]<<endl; i++;
cout<<"10 "<<firstMethodTime[i]<<" "<<seconMethodTime[i]<<endl; i++;
cout<<"20 "<<firstMethodTime[i]<<" "<<seconMethodTime[i]<<endl; i++;
cout<<"80 "<<firstMethodTime[i]<<" "<<seconMethodTime[i]<<endl; i++;
cout<<"100 "<<firstMethodTime[i]<<" "<<seconMethodTime[i]<<endl; i++;
cout<<"150 "<<firstMethodTime[i]<<" "<<seconMethodTime[i]<<endl; i++;
cout<<"200 "<<firstMethodTime[i]<<" "<<seconMethodTime[i]<<endl; i++;
cout<<"256 "<<firstMethodTime[i]<<" "<<seconMethodTime[i]<<endl;
return 0;
}
bool checkUniqueMethod1(string input) {
int unique = 0;
int i = 0;
while (input[i] != '') {
int position = (int)input[i] - 'a';
if ((unique & (1 << position)) >0)
return false;
unique |= (1 << position);
i++;
}
return true;
}
bool checkUniqueMethod2(string input) {
bool unique[256] = { false };
int i = 0;
bool flag = false;
while (unique[i] != '') {
if (unique[(int)input[i]])
flag = true;
else {
unique[(int)input[i]] = true;
i++;
}
}
if(flag)
return false;
else
return true;
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.