Given a String str and the task is to check sum of ASCII value of all characters is a perfect square or not.
Examples :
Input : ddddddddddddddddddddddddd
Output : YesInput : GeeksForGeeks
Output : No
Algorithm
- Calculate the string length
- Calculate sum of ASCII value of all characters
- Take the square root of the number sum and store it into variable squareRoot
- Take floor value of the squareRoot and subtract from squareRoot
- If the difference of floor value of squareRoot and squareRoot is 0 then print "Yes" otherwise "No"
Below is the implementation of the above approach :
// C++ program to find if string is a
// perfect square or not.
#include <bits/stdc++.h>
using namespace std;
bool isPerfectSquareString(string str)
{
int sum = 0;
// calculating the length of
// the string
int len = str.length();
// calculating the ASCII value
// of the string
for (int i = 0; i < len; i++)
sum += (int)str[i];
// Find floating point value of
// square root of x.
long double squareRoot = sqrt(sum);
// If square root is an integer
return ((squareRoot -
floor(squareRoot)) == 0);
}
// Driver code
int main()
{
string str = "d";
if (isPerfectSquareString(str))
cout << "Yes";
else
cout << "No";
}
// Java program to find if string
// is a perfect square or not.
import java.io.*;
class GFG {
static boolean isPerfectSquareString(String str)
{
int sum = 0;
// calculating the length
// of the string
int len = str.length();
// calculating the ASCII
// value of the string
for (int i = 0; i < len; i++)
sum += (int)str.charAt(i);
// Find floating point value
// of square root of x.
long squareRoot = (long)Math.sqrt(sum);
// If square root is an integer
return ((squareRoot -
Math.floor(squareRoot)) == 0);
}
// Driver code
public static void main (String[] args)
{
String str = "d";
if (isPerfectSquareString(str))
System.out.println("Yes");
else
System.out.println("No");
}
}
// This code is contributed by Ajit.
# Python3 program to find
# if string is a perfect
# square or not.
import math;
def isPerfectSquareString(str):
sum = 0;
# calculating the length
# of the string
l = len(str);
# calculating the ASCII
# value of the string
for i in range(l):
sum = sum + ord(str[i]);
# Find floating point value
# of square root of x.
squareRoot = math.sqrt(sum);
# If square root is an integer
return ((squareRoot -
math.floor(squareRoot)) == 0);
# Driver code
str = "d";
if (isPerfectSquareString(str)):
print("Yes");
else:
print("No");
# This code is contributed by mits
// C# program to find if string
// is a perfect square or not.
using System;
class GFG
{
static bool isPerfectSquareString(string str)
{
int sum = 0;
// calculating the length
// of the string
int len = str.Length;
// calculating the ASCII
// value of the string
for (int i = 0; i < len; i++)
sum += (int)str[i];
// Find floating point value
// of square root of x.
double squareRoot = Math.Sqrt(sum);
double F = Math.Floor(squareRoot);
// If square root is an integer
return ((squareRoot - F) == 0);
}
// Driver Code
public static void Main()
{
string str = "d";
if (isPerfectSquareString(str))
Console.WriteLine("Yes");
else
Console.WriteLine("No");
}
}
// This code is contributed by Sam007
<?php
// PHP program to find if string
// is a perfect square or not.
function isPerfectSquareString($str)
{
$sum = 0;
// calculating the length
// of the string
$len = strlen($str);
// calculating the ASCII
// value of the string
for ($i = 0; $i < $len; $i++)
$sum += (int)$str[$i];
// Find floating point value
// of square root of x.
$squareRoot = sqrt($sum);
// If square root is an integer
return (($squareRoot -
floor($squareRoot)) == 0);
}
// Driver code
$str = "d";
if (isPerfectSquareString($str))
echo "Yes";
else
echo "No";
// This code is contributed by m_kit
?>
<script>
// JavaScript program to find if string is a
// perfect square or not.
function isPerfectSquareString(str)
{
var sum = 0;
// Calculating the length of
// the string
var len = str.length;
// Calculating the ASCII value
// of the string
for(var i = 0; i < len; i++)
sum += str.charCodeAt(i);
// Find floating point value of
// square root of x.
var squareRoot = Math.sqrt(sum);
// If square root is an integer
return squareRoot - Math.floor(squareRoot) == 0;
}
// Driver code
var str = "d";
if (isPerfectSquareString(str))
document.write("Yes");
else
document.write("No");
// This code is contributed by rdtank
</script>
Output
Yes
Time Complexity: O(len), where the len is the length of the string.
Auxiliary Space: O(1)