从字符串中查找不同年份的总数
给定一个包含单词和日期的字符串,任务是找到该字符串中提到的不同年份的总数。
注意:假设日期为“DD-MM-YYYY”格式。
例子:
Input: str = "UN was established on 24-10-1945.
India got freedom on 15-08-1947."
Output: 2
2 distinct years i.e. 1945 and 1947 have been referenced.
Input: str = "Soon after the world war 2 ended on 02-09-1945.
The UN was established on 24-10-1945."
Output: 1
Only 1 Year, i.e 1945 has been referenced .
方法:
- 开始遍历字符串。
- 检查当前字符是否为数字。将其存储在另一个字符串中,即 dateString。
- 检查当前字符是否为'-',然后删除dateString中存储的字符。
- 检查dateString的长度是否等于4,则表示是一年。
- 将那一年存储在 unordered_set 中。
- 返回 unordered_set 的大小,因为它只包含唯一值。
下面是上述方法的实现:
C++
// C++ Program to find the total
// number of distinct years
#include
using namespace std;
// function to find the total
// number of distinct years
int distinct_year(string str)
{
string str2 = "";
unordered_set uniqueDates;
for (int i = 0; i < str.length(); i++) {
if (isdigit(str[i])) {
str2.push_back(str[i]);
}
// if we found - then clear the str2
else if (str[i] == '-') {
str2.clear();
}
// if length of str2 becomes 4
// then store it in a set
else if (str2.length() == 4) {
uniqueDates.insert(str2);
str2.clear();
}
// else clear the string.
else{
str2.clear();
}
}
// return the size of set
return uniqueDates.size();
}
// Driver code
int main()
{
string str = "UN was established on 24-10-1945."
"India got freedom on 15-08-1947.";
cout << distinct_year(str);
return 0;
}
Java
import java.util.HashSet;
import java.util.Set;
// Java Program to find the total
// number of distinct years
public class GFG {
// function to find the total
// number of distinct years
static int distinct_year(String str) {
String str2 = "";
Set uniqueDates = new HashSet<>();
for (int i = 0; i < str.length(); i++) {
if (Character.isDigit(str.charAt(i))) {
str2 += (str.charAt(i));
}
// if we found - then clear the str2
if (str.charAt(i) == '-') {
str2 = "";
}
// if length of str2 becomes 4
// then store it in a set
if (str2.length() == 4) {
uniqueDates.add(str2);
str2 = "";
}
}
// return the size of set
return uniqueDates.size();
}
// Driver code
static public void main(String[] args) {
String str = "UN was established on 24-10-1945."
+ "India got freedom on 15-08-1947.";
System.out.println(distinct_year(str));
}
}
Python3
# Python3 Program to find the total
# number of distinct years
# function to find the total
# number of distinct years
import re
def distinct_years(str):
str2 = ""
uniqueDates = set()
pattern="[0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]"
dates = re.findall(pattern,str)
for item in dates:
uniqueDates.add(item.split('-')[-1])
# return the size of se
return len(uniqueDates)
# Driver code
if __name__ == "__main__":
str = "UN was established on 24-10-1945.\
India got freedom on 15-08-1947."
print(distinct_years(str))
# This code is contributed by
# sanjeev2552
C#
// C# Program to find the total
// number of distinct years
using System;
using System.Collections.Generic;
class GFG
{
// function to find the total
// number of distinct years
static int distinct_year(String str)
{
String str2 = "";
HashSet uniqueDates = new HashSet();
for (int i = 0; i < str.Length; i++)
{
if (char.IsDigit(str[i]))
{
str2 += (str[i]);
}
// if we found - then clear the str2
if (str[i] == '-')
{
str2 = "";
}
// if length of str2 becomes 4
// then store it in a set
if (str2.Length == 4)
{
uniqueDates.Add(str2);
str2 = "";
}
}
// return the size of set
return uniqueDates.Count;
}
// Driver code
static public void Main(String[] args)
{
String str = "UN was established on 24-10-1945." +
"India got freedom on 15-08-1947.";
Console.WriteLine(distinct_year(str));
}
}
// This code is contributed by Princi Singh
Javascript
输出
2
时间复杂度: O(n)