Java中以给定后缀结尾的词的计数
给定一个由句子组成的字符串 str ,任务是找出给定句子中以给定后缀 suff 结尾的词的数量 。
例子
输入: str = “GeeksForGeeks是一个面向极客的计算机科学门户网站”, suff = “ks”
输出: 2
“GeeksForGeeks “和 “geeks “是唯一以 “ks “结尾的词。
输入: str = “这是一个样本字符串”, suff = “is”
输出: 2
建议。请先在{IDE}上尝试你的方法,然后再继续解决。
步骤
- 使用split()方法从给定的句子中提取所有的单词。
- 现在对每一个词使用endsWith()方法检查当前词是否以给定的后缀结束。
下面是上述方法的实现。
// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
template <size_t N>
void splitString(string (&arr)[N], string str)
{
int n = 0;
istringstream iss(str);
for(auto it = istream_iterator<string>(iss);
it != istream_iterator<string>() && n < N;
++it, ++n)
arr[n] = *it;
}
inline bool ends_with(std::string const& value,
std::string const& ending)
{
if (ending.size() > value.size())
return false;
return std::equal(ending.rbegin(),
ending.rend(),
value.rbegin());
}
// Function to return the count of words
// in the given sentence that
// end with the given suffix
int endingWith(string str, string suff)
{
// To store the count
int cnt = 0;
const int size = 50;
string words[size];
// Extract words from the sentence
splitString(words, str);
// For every word
for(int i = 0; i < size; i++)
{
// If it ends with the given suffix
if (ends_with(words[i], suff))
cnt++;
}
return cnt;
}
// Driver code
int main()
{
string str = "GeeksForGeeks is a computer "
"science portal for geeks";
string suff = "ks";
cout << endingWith(str, suff);
}
// This code is contributed by pratham76
// Java implementation of the approach
class GFG {
// Function to return the count of words
// in the given sentence that
// end with the given suffix
static int endingWith(String str, String suff)
{
// To store the count
int cnt = 0;
// Extract words from the sentence
String words[] = str.split(" ");
// For every word
for (int i = 0; i < words.length; i++) {
// If it ends with the given suffix
if (words[i].endsWith(suff))
cnt++;
}
return cnt;
}
// Driver code
public static void main(String args[])
{
String str = "GeeksForGeeks is a computer"
+ " science portal for geeks";
String suff = "ks";
System.out.print(endingWith(str, suff));
}
}
# Function declared to
# return the count of words
# in the given sentence that
# end with the given suffix
def endingWith( str , suff ):
# Variable to store count
c = 0
# split function used to extract words
# from sentence in form of list
wrd = str.split(" ")
# using for loop with 'in' to extract
# elements of list
for l in wrd:
if l.endswith(suff):
c += 1
# returning the count
return c
# Driver Code
str = "GeeksForGeeks is a computer science portal for geeks"
suff = "ks"
# printing the final cde
print(endingWith(str, suff ))
# This code is contributed by Animesh_Gupta```
```java
// C# implementation of the approach
using System;
class GFG{
// Function to return the count of words
// in the given sentence that
// end with the given suffix
static int endingWith(string str, string suff)
{
// To store the count
int cnt = 0;
string []sep = {" "};
// Extract words from the sentence
string []words = str.Split(sep,
StringSplitOptions.RemoveEmptyEntries);
// For every word
for (int i = 0; i < words.Length; i++)
{
// If it ends with the given suffix
if (words[i].EndsWith(suff))
cnt++;
}
return cnt;
}
// Driver code
public static void Main(string []args)
{
string str = "GeeksForGeeks is a computer" +
" science portal for geeks";
string suff = "ks";
Console.Write(endingWith(str, suff));
}
}
// This code is contributed by rutvik
输出
2