Given a string str and a corner string cs, we need to find out whether the string str starts and ends with the corner string cs or not.
Examples:
Input : str = "geeksmanishgeeks", cs = "geeks" Output : Yes Input : str = "shreya dhatwalia", cs = "abc" Output : No
Algorithm
- Find length of given string str as well as corner string cs. Let this length be n and cl respectively.
- If cl>n, return false as cs can't be greater than str.
- Otherwise, find the prefix and suffix of length cl from str. If both prefix and suffix match with corner string cs, return true otherwise return false.
Implementation:
// CPP program to find if a given corner string
// is present at corners.
#include <bits/stdc++.h>
using namespace std;
bool isCornerPresent(string str, string corner)
{
int n = str.length();
int cl = corner.length();
// If length of corner string is more, it
// cannot be present at corners.
if (n < cl)
return false;
// Return true if corner string is present at
// both corners of given string.
return (str.substr(0, cl).compare(corner) == 0 &&
str.substr(n-cl, cl).compare(corner) == 0);
}
// Driver code
int main()
{
string str = "geeksforgeeks";
string corner = "geeks";
if (isCornerPresent(str, corner))
cout << "Yes";
else
cout << "No";
return 0;
}
// Java program to find if a given corner
// string is present at corners.
import java.io.*;
class GFG {
static boolean isCornerPresent(String str,
String corner)
{
int n = str.length();
int cl = corner.length();
// If length of corner string
// is more, it cannot be present
// at corners.
if (n < cl)
return false;
// Return true if corner string
// is present at both corners
// of given string.
return (str.substring(0, cl).equals(corner) &&
str.substring(n - cl, n).equals(corner));
}
// Driver Code
public static void main (String[] args)
{
String str = "geeksforgeeks";
String corner = "geeks";
if (isCornerPresent(str, corner))
System.out.println("Yes");
else
System.out.println("No");
}
}
// This code is contributed by Manish_100
# Python program to find
# if a given corner string
# is present at corners.
def isCornerPresent(str, corner) :
n = len(str)
cl = len(corner)
# If length of corner
# string is more, it
# cannot be present
# at corners.
if (n < cl) :
return False
# Return true if corner
# string is present at
# both corners of given
# string.
return ((str[: cl] == corner) and
(str[n - cl :] == corner))
# Driver Code
str = "geeksforgeeks"
corner = "geeks"
if (isCornerPresent(str, corner)) :
print ("Yes")
else :
print ("No")
# This code is contributed by
# Manish Shaw(manishshaw1)
// C# program to find if a
// given corner string is
// present at corners.
using System;
class GFG
{
static bool isCornerPresent(string str,
string corner)
{
int n = str.Length;
int cl = corner.Length;
// If length of corner
// string is more, it
// cannot be present
// at corners.
if (n < cl)
return false;
// Return true if corner
// string is present at
// both corners of given
// string.
return (str.Substring(0,
cl).Equals(corner) &&
str.Substring(n - cl,
cl).Equals(corner));
}
// Driver Code
static void Main ()
{
string str = "geeksforgeeks";
string corner = "geeks";
if (isCornerPresent(str, corner))
Console.WriteLine("Yes");
else
Console.WriteLine("No");
}
}
// This code is contributed by
// Manish Shaw(manishshaw1)
<?php
// PHP program to find if a
// given corner string is
// present at corners.
function isCornerPresent($str,
$corner)
{
$n = strlen($str);
$cl = strlen($corner);
// If length of corner
// string is more, it
// cannot be present
// at corners.
if ($n < $cl)
return false;
// Return true if corner
// string is present at
// both corners of given
// string.
return (!strcmp(substr($str, 0,
$cl), $corner) &&
!strcmp(substr($str, $n -
$cl, $cl), $corner));
}
// Driver Code
$str = "geeksforgeeks";
$corner = "geeks";
if (isCornerPresent($str, $corner))
echo ("Yes");
else
echo ("No");
// This code is contributed by
// Manish Shaw(manishshaw1)
?>
<script>
// JavaScript program to find if a given corner string
// is present at corners.
function isCornerPresent(str, corner) {
var n = str.length;
var cl = corner.length;
// If length of corner string is more, it
// cannot be present at corners.
if (n < cl) return false;
// Return true if corner string is present at
// both corners of given string.
return (
str.substring(0, cl).localeCompare(corner) === 0 &&
str.substring(n - cl, n).localeCompare(corner) === 0
);
}
// Driver code
var str = "geeksforgeeks";
var corner = "geeks";
if (isCornerPresent(str, corner)) document.write("Yes");
else document.write("No");
</script>
Output
Yes
Time Complexity: O(n)
Auxiliary Space: O(1)