检查给定的手机号码是否为“靓号”

给定一个手机号码和一些关于“靓号”的条件,我们需要判断该号码是否符合要求。如果一个10位数的手机号码满足以下三个条件中的任意一个,我们就称它为“靓号”

  • 单个数字连续出现三次。 例如 777
  • 三个连续数字呈递增或递减趋势。 例如 INLINECODE8899dda6 或 INLINECODEe961a482。
  • 某个数字在号码中出现了四次或四次以上。 例如 INLINECODE492b9be8 —— 这里的数字 INLINECODE21246fe4 出现了 4 次。

示例:

> 输入: 9859009976

> 输出: Yes

> 该手机号码满足了上面提到的第三个条件。

>

>

>

>

>

> 输入: 7609438921

> 输出: No

> 给定的三个条件均不满足。

解决思路

我们的想法是利用 <a href="https://www.geeksforgeeks.org/cpp/stdtostring-in-cpp/">INLINECODE8987b05e 将数字转换为字符串,这样遍历起来会更容易。为了满足第三个条件(统计每个数字的出现频率),我们使用了基本的字符串哈希概念。

下面是针对该问题的解决方案:

C++

// C++ program to check if a given mobile
// number is fancy or not.
#include 
using namespace std;

// Returns true if s has three consecutive 
// same digits.
bool cond1(string s)
{
    for (int i = 0; i < s.size() - 2; i++) {
        if (s[i] == s[i + 1] && s[i + 1] == s[i + 2])
            return true;
    }
    return false;
}

// Returns true if s has three increasing or
// decreasing digits.
bool cond2(string s)
{
    for (int i = 0; i < s.size() - 2; i++) {
        if ((s[i] < s[i + 1] && s[i + 1]  s[i + 1] && s[i + 1] > s[i + 2]))
            return true;
    }
    return false;
}

// Checks if a single digit occurs 4 times.
bool cond3(string s)
{
    int a[10];
    memset(a, 0, sizeof(a));

    for (int i = 0; i < s.size(); i++) 
        a[s[i] - '0']++;
   
    for (int i = 0; i = 4)
            return true;
    
    return false;
}

bool isFancy(string s)
{
    if (cond1(s) || cond2(s) || cond3(s))
        return true;
    else
        return false;
}

// Driver condition
int main()
{
    long int n = 7609438921; 
    string s = to_string(n);
    if (isFancy(s))
        cout << "Yes";
    else
        cout << "No";

    return 0;
}

Java

// Java program to check if a given mobile
// number is fancy or not.
import java.util.*;
import java.lang.*;
import java.io.*;

class GFG {
    
public static void main(String[] args) {
        
        String mobileNumber = "7654449244";
        
        if (isFancy(mobileNumber))
            System.out.println("Yes");
        else
            System.out.println("No");
    }

    public static boolean isFancy(String mobileNumber) {
        int incrementCount = 0;
        int decrementCount = 0;
        int consecutiveCount = 1;
        int[] countArray = new int[10];
        int prevDigit = -1;
        for(int i = 0; i  3)
                return true;
            // Checking for consecutive digits are same
        
            if(prevDigit == digit)
                consecutiveCount += 1;
        
            else if(prevDigit == digit+1 && prevDigit != -1) {
                incrementCount += 1;
                decrementCount = 0;
                consecutiveCount = 1;
            }
        
            else if(digit == prevDigit+1) {
                decrementCount += 1;
                incrementCount = 0;
                consecutiveCount = 1;
            }
        
            if(consecutiveCount == 3)
                return true;
        
            if(incrementCount == 2 || decrementCount == 2)
                return true;
        
            prevDigit = digit;
        }
        return false;
    }
}

// This code is contributed by Vasishta Balla

Python 3

# Python3 program to check if a 
# given mobile number is fancy or not. 

# Returns true if s has three 
# consecutive same digits. 
def cond1(s): 

    for i in range(len(s) - 2): 
        if (s[i] == s[i + 1] and 
            s[i + 1] == s[i + 2]): 
            return True
    
    return False

# Returns true if s has three 
# increasing or decreasing digits. 
def cond2(s): 
    for i in range(len(s) - 2): 
        if ((s[i] < s[i + 1] and 
             s[i + 1]  s[i + 1] and 
             s[i + 1] > s[i + 2])): 
            return True
    
    return False

# Checks if a single digit 
# occurs 4 times. 
def cond3(s): 
    a = [0] * 10
    for i in range(len(s)): 
        a[ord(s[i]) - ord(‘0‘)] = a[ord(s[i]) - ord(‘0‘)] + 1
       
    for i in range(10): 
        if (a[i] >= 4): 
            return True
    
    return False

def isFancy(s): 
    if (cond1(s) or cond2(s) or cond3(s)): 
        return True
    else: 
        return False

# Driver Code 
if __name__ == "__main__": 
    n = 7609438921
    s = str(n) 
    if (isFancy(s)): 
        print("Yes") 
    else: 
        print("No") 

C#

// C# program to check if a given mobile
// number is fancy or not.
using System;
using System.Collections.Generic;

class GFG {
    
    // Returns true if s has three consecutive 
    // same digits.
    static bool cond1(string s)
    {
        for (int i = 0; i < s.Length - 2; i++) {
            if (s[i] == s[i + 1] && s[i + 1] == s[i + 2])
                return true;
        }
        return false;
    }
    
    // Returns true if s has three increasing or
    // decreasing digits.
    static bool cond2(string s)
    {
        for (int i = 0; i < s.Length - 2; i++) {
            if ((s[i] < s[i + 1] && s[i + 1]  s[i + 1] && s[i + 1] > s[i + 2]))
                return true;
        }
        return false;
    }
    
    // Checks if a single digit occurs 4 times.
    static bool cond3(string s)
    {
        int []a = new int[10];
        for (int i = 0; i < s.Length; i++) 
            a[s[i] - '0']++;
       
        for (int i = 0; i = 4)
                return true;
        
        return false;
    }
    
    static bool isFancy(string s)
    {
        if (cond1(s) || cond2(s) || cond3(s))
            return true;
        else
            return false;
    }

    // Driver condition
    public static void Main()
    {
        long n = 7609438921; 
        string s = n.ToString();
        if (isFancy(s))
            Console.WriteLine("Yes");
        else
            Console.WriteLine("No");
    }
}

// This code is contributed by PrinciRaj1992

Javascript



// Javascript program to check if a given mobile
// number is fancy or not.

// Returns true if s has three consecutive 
// same digits.
function cond1(s)
{
    for (let i = 0; i < s.length - 2; i++) {
        if (s[i] == s[i + 1] && s[i + 1] == s[i + 2])
            return true;
    }
    return false;
}

// Returns true if s has three increasing or
// decreasing digits.
function cond2(s)
{
    for (let i = 0; i < s.length - 2; i++) {
        if ((s[i] < s[i + 1] && s[i + 1]  s[i + 1] && s[i + 1] > s[i + 2]))
            return true;
    }
    return false;
}

// Checks if a single digit occurs 4 times.
function cond3(s)
{
    let a = new Array(10).fill(0);

    for (let i = 0; i < s.length; i++) 
        a[s[i] - '0']++;
   
    for (let i = 0; i = 4)
            return true;
    
    return false;
}

function isFancy(s)
{
    if (cond1(s) || cond2(s) || cond3(s))
        return true;
    else
        return false;
}

// Driver condition
let n = 7609438921; 
let s = n.toString();
if (isFancy(s))
    document.write("Yes");
else
    document.write("No");


声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/28384.html
点赞
0.00 平均评分 (0% 分数) - 0